@@ -53,43 +53,60 @@ class DartdocFileWriter implements FileWriter {
53
53
DartdocFileWriter (this .outputDir, this .resourceProvider);
54
54
55
55
@override
56
- void write (String filePath, Object content,
57
- {bool allowOverwrite, Warnable element}) {
56
+ void writeBytes (
57
+ String filePath,
58
+ List <int > content, {
59
+ bool allowOverwrite = false ,
60
+ }) {
58
61
// Replace '/' separators with proper separators for the platform.
59
62
var outFile = path.joinAll (filePath.split ('/' ));
60
63
61
- allowOverwrite ?? = false ;
62
64
if (! allowOverwrite) {
63
- if (_fileElementMap.containsKey (outFile)) {
64
- assert (element != null ,
65
- 'Attempted overwrite of $outFile without corresponding element' );
66
- var originalElement = _fileElementMap[outFile];
67
- Iterable <Warnable > referredFrom =
68
- originalElement != null ? [originalElement] : null ;
69
- element? .warn (PackageWarning .duplicateFile,
70
- message: outFile, referredFrom: referredFrom);
71
- }
65
+ _warnAboutOverwrite (outFile, null );
72
66
}
67
+ _fileElementMap[outFile] = null ;
68
+
69
+ var file = _getFile (outFile);
70
+ file.writeAsBytesSync (content);
71
+ writtenFiles.add (outFile);
72
+ logProgress (outFile);
73
+ }
74
+
75
+ @override
76
+ void write (String filePath, String content, {Warnable element}) {
77
+ // Replace '/' separators with proper separators for the platform.
78
+ var outFile = path.joinAll (filePath.split ('/' ));
79
+
80
+ _warnAboutOverwrite (outFile, element);
73
81
_fileElementMap[outFile] = element;
74
82
83
+ var file = _getFile (outFile);
84
+ file.writeAsStringSync (content);
85
+ writtenFiles.add (outFile);
86
+ logProgress (outFile);
87
+ }
88
+
89
+ void _warnAboutOverwrite (String outFile, Warnable element) {
90
+ if (_fileElementMap.containsKey (outFile)) {
91
+ assert (element != null ,
92
+ 'Attempted overwrite of $outFile without corresponding element' );
93
+ var originalElement = _fileElementMap[outFile];
94
+ var referredFrom = originalElement != null ? [originalElement] : null ;
95
+ element? .warn (PackageWarning .duplicateFile,
96
+ message: outFile, referredFrom: referredFrom);
97
+ }
98
+ }
99
+
100
+ /// Returns the file at [outFile] relative to [outputDir] , creating the parent
101
+ /// directory if necessary.
102
+ File _getFile (String outFile) {
75
103
var file = resourceProvider
76
104
.getFile (resourceProvider.pathContext.join (outputDir, outFile));
77
105
var parent = file.parent2;
78
106
if (! parent.exists) {
79
107
parent.create ();
80
108
}
81
-
82
- if (content is String ) {
83
- file.writeAsStringSync (content);
84
- } else if (content is List <int >) {
85
- file.writeAsBytesSync (content);
86
- } else {
87
- throw ArgumentError .value (
88
- content, 'content' , '`content` must be `String` or `List<int>`.' );
89
- }
90
-
91
- writtenFiles.add (outFile);
92
- logProgress (outFile);
109
+ return file;
93
110
}
94
111
}
95
112
0 commit comments