@@ -53,43 +53,60 @@ class DartdocFileWriter implements FileWriter {
5353 DartdocFileWriter (this .outputDir, this .resourceProvider);
5454
5555 @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+ }) {
5861 // Replace '/' separators with proper separators for the platform.
5962 var outFile = path.joinAll (filePath.split ('/' ));
6063
61- allowOverwrite ?? = false ;
6264 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 );
7266 }
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);
7381 _fileElementMap[outFile] = element;
7482
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) {
75103 var file = resourceProvider
76104 .getFile (resourceProvider.pathContext.join (outputDir, outFile));
77105 var parent = file.parent2;
78106 if (! parent.exists) {
79107 parent.create ();
80108 }
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;
93110 }
94111}
95112
0 commit comments