@@ -53,43 +53,58 @@ 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
}
73
- _fileElementMap[outFile] = element;
74
67
68
+ var file = _getFile (outFile);
69
+ file.writeAsBytesSync (content);
70
+ writtenFiles.add (outFile);
71
+ logProgress (outFile);
72
+ }
73
+
74
+ @override
75
+ void write (String filePath, String content, {Warnable element}) {
76
+ // Replace '/' separators with proper separators for the platform.
77
+ var outFile = path.joinAll (filePath.split ('/' ));
78
+
79
+ _warnAboutOverwrite (outFile, element);
80
+
81
+ var file = _getFile (outFile);
82
+ file.writeAsStringSync (content);
83
+ writtenFiles.add (outFile);
84
+ logProgress (outFile);
85
+ }
86
+
87
+ void _warnAboutOverwrite (String outFile, Warnable element) {
88
+ if (_fileElementMap.containsKey (outFile)) {
89
+ assert (element != null ,
90
+ 'Attempted overwrite of $outFile without corresponding element' );
91
+ var originalElement = _fileElementMap[outFile];
92
+ var referredFrom = originalElement != null ? [originalElement] : null ;
93
+ element? .warn (PackageWarning .duplicateFile,
94
+ message: outFile, referredFrom: referredFrom);
95
+ }
96
+ }
97
+
98
+ /// Returns the file at [outFile] relative to [outputDir] , creating the parent
99
+ /// directory if necessary.
100
+ File _getFile (String outFile) {
75
101
var file = resourceProvider
76
102
.getFile (resourceProvider.pathContext.join (outputDir, outFile));
77
103
var parent = file.parent2;
78
104
if (! parent.exists) {
79
105
parent.create ();
80
106
}
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);
107
+ return file;
93
108
}
94
109
}
95
110
0 commit comments