Skip to content

Commit 3076a2e

Browse files
authored
Other cleanup (#1549)
* HtmlGeneratorInstance: cleanup fields and properties Remove unused properties Mark private anything that's not needed externally * Pass around paths, not Directories Existing codepaths ensure the directory is already created
1 parent 07a4f4c commit 3076a2e

File tree

5 files changed

+53
-54
lines changed

5 files changed

+53
-54
lines changed

lib/dartdoc.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ class DartDoc extends PackageBuilder {
162162
if (!outputDir.existsSync()) outputDir.createSync(recursive: true);
163163

164164
for (var generator in generators) {
165-
await generator.generate(package, outputDir);
165+
await generator.generate(package, outputDir.path);
166166
writtenFiles.addAll(generator.writtenFiles.map(path.normalize));
167167
}
168168

lib/src/generator.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
library dartdoc.generator;
77

88
import 'dart:async' show Stream, Future;
9-
import 'dart:io' show Directory, File;
9+
import 'dart:io' show File;
1010

1111
import 'model.dart' show Package;
1212

@@ -17,7 +17,7 @@ import 'model.dart' show Package;
1717
abstract class Generator {
1818
/// Generate the documentation for the given package in the specified
1919
/// directory. Completes the returned future when done.
20-
Future generate(Package package, Directory out);
20+
Future generate(Package package, String outputDirectoryPath);
2121

2222
/// Fires when a file is created.
2323
Stream<File> get onFileCreated;

lib/src/html/html_generator.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
library dartdoc.html_generator;
66

77
import 'dart:async' show Future, StreamController, Stream;
8-
import 'dart:io' show Directory, File;
8+
import 'dart:io' show File;
99

1010
import '../generator.dart';
1111
import '../model.dart';
@@ -46,7 +46,6 @@ class HtmlGenerator extends Generator {
4646
@override
4747
Set<String> get writtenFiles => _instance.writtenFiles;
4848

49-
/// [url] - optional URL for where the docs will be hosted.
5049
static Future<HtmlGenerator> create(
5150
{HtmlGeneratorOptions options,
5251
List<String> headers,
@@ -67,10 +66,10 @@ class HtmlGenerator extends Generator {
6766

6867
/// Actually write out the documentation for [package].
6968
/// Stores the HtmlGeneratorInstance so we can access it in [writtenFiles].
70-
Future generate(Package package, Directory out) {
69+
Future generate(Package package, String outputDirectoryPath) {
7170
assert(_instance == null);
7271
_instance = new HtmlGeneratorInstance(
73-
_options, _templates, package, out, _onFileCreated);
72+
_options, _templates, package, outputDirectoryPath, _onFileCreated);
7473
return _instance.generate();
7574
}
7675
}

lib/src/html/html_generator_instance.dart

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -21,52 +21,52 @@ import 'templates.dart';
2121

2222
class HtmlGeneratorInstance implements HtmlOptions {
2323
final HtmlGeneratorOptions _options;
24-
25-
String get url => _options.url;
2624
final Templates _templates;
27-
final Package package;
28-
final Directory out;
29-
final List<ModelElement> documentedElements = <ModelElement>[];
25+
final Package _package;
26+
final String _outputDirectoryPath;
27+
final List<ModelElement> _documentedElements = <ModelElement>[];
3028
final StreamController<File> _onFileCreated;
29+
3130
@override
3231
String get relCanonicalPrefix => _options.relCanonicalPrefix;
32+
3333
@override
3434
String get toolVersion => _options.toolVersion;
35-
String get faviconPath => _options.faviconPath;
36-
bool get useCategories => _options.useCategories;
37-
bool get prettyIndexJson => _options.prettyIndexJson;
35+
36+
String get _faviconPath => _options.faviconPath;
37+
bool get _useCategories => _options.useCategories;
3838

3939
// Protect against bugs in canonicalization by tracking what files we
4040
// write.
4141
final Set<String> writtenFiles = new Set<String>();
4242

43-
HtmlGeneratorInstance(this._options, this._templates, this.package, this.out,
44-
this._onFileCreated);
43+
HtmlGeneratorInstance(this._options, this._templates, this._package,
44+
this._outputDirectoryPath, this._onFileCreated);
4545

4646
Future generate() async {
47-
if (!out.existsSync()) out.createSync();
48-
49-
if (package != null) {
47+
if (_package != null) {
5048
_generateDocs();
5149
_generateSearchIndex();
5250
}
5351

5452
await _copyResources();
55-
if (faviconPath != null) {
56-
var bytes = new File(faviconPath).readAsBytesSync();
53+
if (_faviconPath != null) {
54+
var bytes = new File(_faviconPath).readAsBytesSync();
5755
// Allow overwrite of favicon.
58-
String filename = path.join(out.path, 'static-assets', 'favicon.png');
56+
String filename =
57+
path.join(_outputDirectoryPath, 'static-assets', 'favicon.png');
5958
writtenFiles.remove(filename);
60-
_writeFile(path.join(out.path, 'static-assets', 'favicon.png'), bytes);
59+
_writeFile(filename, bytes);
6160
}
6261
}
6362

6463
void _generateSearchIndex() {
65-
var encoder =
66-
prettyIndexJson ? new JsonEncoder.withIndent(' ') : new JsonEncoder();
64+
var encoder = _options.prettyIndexJson
65+
? new JsonEncoder.withIndent(' ')
66+
: new JsonEncoder();
6767

6868
final List<Map> indexItems =
69-
documentedElements.where((e) => e.isCanonical).map((ModelElement e) {
69+
_documentedElements.where((e) => e.isCanonical).map((ModelElement e) {
7070
Map data = {
7171
'name': e.name,
7272
'qualifiedName': e.name,
@@ -95,91 +95,91 @@ class HtmlGeneratorInstance implements HtmlOptions {
9595
});
9696

9797
String json = encoder.convert(indexItems);
98-
_writeFile(path.join(out.path, 'index.json'), '${json}\n');
98+
_writeFile(path.join(_outputDirectoryPath, 'index.json'), '${json}\n');
9999
}
100100

101101
void _generateDocs() {
102-
if (package == null) return;
102+
if (_package == null) return;
103103

104104
generatePackage();
105105

106-
for (var lib in filterNonDocumented(package.libraries)) {
106+
for (var lib in filterNonDocumented(_package.libraries)) {
107107
// if (lib.name != 'extract_messages') continue;
108-
generateLibrary(package, lib);
108+
generateLibrary(_package, lib);
109109

110110
for (var clazz in filterNonDocumented(lib.allClasses)) {
111-
generateClass(package, lib, clazz);
111+
generateClass(_package, lib, clazz);
112112

113113
for (var constructor in filterNonDocumented(clazz.constructors)) {
114114
if (!constructor.isCanonical) continue;
115-
generateConstructor(package, lib, clazz, constructor);
115+
generateConstructor(_package, lib, clazz, constructor);
116116
}
117117

118118
for (var constant in filterNonDocumented(clazz.constants)) {
119119
if (!constant.isCanonical) continue;
120-
generateConstant(package, lib, clazz, constant);
120+
generateConstant(_package, lib, clazz, constant);
121121
}
122122

123123
for (var property in filterNonDocumented(clazz.staticProperties)) {
124124
if (!property.isCanonical) continue;
125-
generateProperty(package, lib, clazz, property);
125+
generateProperty(_package, lib, clazz, property);
126126
}
127127

128128
for (var property in filterNonDocumented(clazz.propertiesForPages)) {
129129
if (!property.isCanonical) continue;
130-
generateProperty(package, lib, clazz, property);
130+
generateProperty(_package, lib, clazz, property);
131131
}
132132

133133
for (var method in filterNonDocumented(clazz.methodsForPages)) {
134134
if (!method.isCanonical) continue;
135-
generateMethod(package, lib, clazz, method);
135+
generateMethod(_package, lib, clazz, method);
136136
}
137137

138138
for (var operator in filterNonDocumented(clazz.operatorsForPages)) {
139139
if (!operator.isCanonical) continue;
140-
generateMethod(package, lib, clazz, operator);
140+
generateMethod(_package, lib, clazz, operator);
141141
}
142142

143143
for (var method in filterNonDocumented(clazz.staticMethods)) {
144144
if (!method.isCanonical) continue;
145-
generateMethod(package, lib, clazz, method);
145+
generateMethod(_package, lib, clazz, method);
146146
}
147147
}
148148

149149
for (var eNum in filterNonDocumented(lib.enums)) {
150-
generateEnum(package, lib, eNum);
150+
generateEnum(_package, lib, eNum);
151151
for (var property in filterNonDocumented(eNum.propertiesForPages)) {
152-
generateProperty(package, lib, eNum, property);
152+
generateProperty(_package, lib, eNum, property);
153153
}
154154
for (var operator in filterNonDocumented(eNum.operatorsForPages)) {
155-
generateMethod(package, lib, eNum, operator);
155+
generateMethod(_package, lib, eNum, operator);
156156
}
157157
for (var method in filterNonDocumented(eNum.methodsForPages)) {
158-
generateMethod(package, lib, eNum, method);
158+
generateMethod(_package, lib, eNum, method);
159159
}
160160
}
161161

162162
for (var constant in filterNonDocumented(lib.constants)) {
163-
generateTopLevelConstant(package, lib, constant);
163+
generateTopLevelConstant(_package, lib, constant);
164164
}
165165

166166
for (var property in filterNonDocumented(lib.properties)) {
167-
generateTopLevelProperty(package, lib, property);
167+
generateTopLevelProperty(_package, lib, property);
168168
}
169169

170170
for (var function in filterNonDocumented(lib.functions)) {
171-
generateFunction(package, lib, function);
171+
generateFunction(_package, lib, function);
172172
}
173173

174174
for (var typeDef in filterNonDocumented(lib.typedefs)) {
175-
generateTypeDef(package, lib, typeDef);
175+
generateTypeDef(_package, lib, typeDef);
176176
}
177177
}
178178
}
179179

180180
void generatePackage() {
181-
TemplateData data = new PackageTemplateData(this, package, useCategories);
182-
logInfo('documenting ${package.name}');
181+
TemplateData data = new PackageTemplateData(this, _package, _useCategories);
182+
logInfo('documenting ${_package.name}');
183183

184184
_build('index.html', _templates.indexTemplate, data);
185185
}
@@ -191,7 +191,7 @@ class HtmlGeneratorInstance implements HtmlOptions {
191191
package.warnOnElement(lib, PackageWarning.noLibraryLevelDocs);
192192
}
193193
TemplateData data =
194-
new LibraryTemplateData(this, package, lib, useCategories);
194+
new LibraryTemplateData(this, package, lib, _useCategories);
195195

196196
_build(path.join(lib.dirName, '${lib.fileName}'),
197197
_templates.libraryTemplate, data);
@@ -285,20 +285,20 @@ class HtmlGeneratorInstance implements HtmlOptions {
285285
'encountered $resourcePath');
286286
}
287287
String destFileName = resourcePath.substring(prefix.length);
288-
_writeFile(path.join(out.path, 'static-assets', destFileName),
288+
_writeFile(path.join(_outputDirectoryPath, 'static-assets', destFileName),
289289
await loader.loadAsBytes(resourcePath));
290290
}
291291
}
292292

293293
void _build(String filename, TemplateRenderer template, TemplateData data) {
294-
String fullName = path.join(out.path, filename);
294+
String fullName = path.join(_outputDirectoryPath, filename);
295295

296296
String content = template(data,
297297
assumeNullNonExistingProperty: false, errorOnMissingProperty: true);
298298

299299
_writeFile(fullName, content);
300300
if (data.self is ModelElement) {
301-
documentedElements.add(data.self);
301+
_documentedElements.add(data.self);
302302
}
303303
}
304304

test/html_generator_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void main() {
7676
setUp(() async {
7777
generator = await HtmlGenerator.create();
7878
tempOutput = Directory.systemTemp.createTempSync('doc_test_temp');
79-
return generator.generate(null, tempOutput);
79+
return generator.generate(null, tempOutput.path);
8080
});
8181

8282
tearDown(() {

0 commit comments

Comments
 (0)