Skip to content

Commit ece0eea

Browse files
committed
Clean up implementations of HtmlOptions
Made HtmlGeneratorOptions implement HtmlOptions it add all of the required fields Removed HtmlOptions implementation from HtmlGeneratorInstance And 4 gratuitous getters Added `useCategories` to HtmlOptions Simplied the constructors of LibraryTemplateData and PackageTemplateData
1 parent e466c51 commit ece0eea

File tree

3 files changed

+32
-35
lines changed

3 files changed

+32
-35
lines changed

lib/src/html/html_generator.dart

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'package:path/path.dart' as p;
1212
import '../generator.dart';
1313
import '../model.dart';
1414
import 'html_generator_instance.dart';
15+
import 'template_data.dart';
1516
import 'templates.dart';
1617

1718
typedef String Renderer(String input);
@@ -109,14 +110,20 @@ class HtmlGenerator extends Generator {
109110
}
110111
}
111112

112-
class HtmlGeneratorOptions {
113+
class HtmlGeneratorOptions implements HtmlOptions {
113114
final String url;
114-
final String relCanonicalPrefix;
115115
final String faviconPath;
116-
final String toolVersion;
117-
final bool useCategories;
118116
final bool prettyIndexJson;
119117

118+
@override
119+
final bool useCategories;
120+
121+
@override
122+
final String relCanonicalPrefix;
123+
124+
@override
125+
final String toolVersion;
126+
120127
HtmlGeneratorOptions(
121128
{this.url,
122129
this.relCanonicalPrefix,

lib/src/html/html_generator_instance.dart

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,13 @@ import 'templates.dart';
2121

2222
typedef void FileWriter(String path, Object content, {bool allowOverwrite});
2323

24-
class HtmlGeneratorInstance implements HtmlOptions {
24+
class HtmlGeneratorInstance {
2525
final HtmlGeneratorOptions _options;
2626
final Templates _templates;
2727
final Package _package;
2828
final List<ModelElement> _documentedElements = <ModelElement>[];
2929
final FileWriter _writer;
3030

31-
@override
32-
String get relCanonicalPrefix => _options.relCanonicalPrefix;
33-
34-
@override
35-
String get toolVersion => _options.toolVersion;
36-
37-
String get _faviconPath => _options.faviconPath;
38-
bool get _useCategories => _options.useCategories;
39-
4031
HtmlGeneratorInstance(
4132
this._options, this._templates, this._package, this._writer);
4233

@@ -47,8 +38,8 @@ class HtmlGeneratorInstance implements HtmlOptions {
4738
}
4839

4940
await _copyResources();
50-
if (_faviconPath != null) {
51-
var bytes = new File(_faviconPath).readAsBytesSync();
41+
if (_options.faviconPath != null) {
42+
var bytes = new File(_options.faviconPath).readAsBytesSync();
5243
// Allow overwrite of favicon.
5344
_writer(path.join('static-assets', 'favicon.png'), bytes,
5445
allowOverwrite: true);
@@ -173,7 +164,7 @@ class HtmlGeneratorInstance implements HtmlOptions {
173164
}
174165

175166
void generatePackage() {
176-
TemplateData data = new PackageTemplateData(this, _package, _useCategories);
167+
TemplateData data = new PackageTemplateData(_options, _package);
177168
logInfo('documenting ${_package.name}');
178169

179170
_build('index.html', _templates.indexTemplate, data);
@@ -185,35 +176,35 @@ class HtmlGeneratorInstance implements HtmlOptions {
185176
if (!lib.isAnonymous && !lib.hasDocumentation) {
186177
package.warnOnElement(lib, PackageWarning.noLibraryLevelDocs);
187178
}
188-
TemplateData data =
189-
new LibraryTemplateData(this, package, lib, _useCategories);
179+
TemplateData data = new LibraryTemplateData(_options, package, lib);
190180

191181
_build(path.join(lib.dirName, '${lib.fileName}'),
192182
_templates.libraryTemplate, data);
193183
}
194184

195185
void generateClass(Package package, Library lib, Class clazz) {
196-
TemplateData data = new ClassTemplateData(this, package, lib, clazz);
186+
TemplateData data = new ClassTemplateData(_options, package, lib, clazz);
197187
_build(path.joinAll(clazz.href.split('/')), _templates.classTemplate, data);
198188
}
199189

200190
void generateConstructor(
201191
Package package, Library lib, Class clazz, Constructor constructor) {
202192
TemplateData data =
203-
new ConstructorTemplateData(this, package, lib, clazz, constructor);
193+
new ConstructorTemplateData(_options, package, lib, clazz, constructor);
204194

205195
_build(path.joinAll(constructor.href.split('/')),
206196
_templates.constructorTemplate, data);
207197
}
208198

209199
void generateEnum(Package package, Library lib, Enum eNum) {
210-
TemplateData data = new EnumTemplateData(this, package, lib, eNum);
200+
TemplateData data = new EnumTemplateData(_options, package, lib, eNum);
211201

212202
_build(path.joinAll(eNum.href.split('/')), _templates.enumTemplate, data);
213203
}
214204

215205
void generateFunction(Package package, Library lib, ModelFunction function) {
216-
TemplateData data = new FunctionTemplateData(this, package, lib, function);
206+
TemplateData data =
207+
new FunctionTemplateData(_options, package, lib, function);
217208

218209
_build(path.joinAll(function.href.split('/')), _templates.functionTemplate,
219210
data);
@@ -222,7 +213,7 @@ class HtmlGeneratorInstance implements HtmlOptions {
222213
void generateMethod(
223214
Package package, Library lib, Class clazz, Method method) {
224215
TemplateData data =
225-
new MethodTemplateData(this, package, lib, clazz, method);
216+
new MethodTemplateData(_options, package, lib, clazz, method);
226217

227218
_build(
228219
path.joinAll(method.href.split('/')), _templates.methodTemplate, data);
@@ -231,7 +222,7 @@ class HtmlGeneratorInstance implements HtmlOptions {
231222
void generateConstant(
232223
Package package, Library lib, Class clazz, Field property) {
233224
TemplateData data =
234-
new ConstantTemplateData(this, package, lib, clazz, property);
225+
new ConstantTemplateData(_options, package, lib, clazz, property);
235226

236227
_build(path.joinAll(property.href.split('/')), _templates.constantTemplate,
237228
data);
@@ -240,7 +231,7 @@ class HtmlGeneratorInstance implements HtmlOptions {
240231
void generateProperty(
241232
Package package, Library lib, Class clazz, Field property) {
242233
TemplateData data =
243-
new PropertyTemplateData(this, package, lib, clazz, property);
234+
new PropertyTemplateData(_options, package, lib, clazz, property);
244235

245236
_build(path.joinAll(property.href.split('/')), _templates.propertyTemplate,
246237
data);
@@ -249,7 +240,7 @@ class HtmlGeneratorInstance implements HtmlOptions {
249240
void generateTopLevelProperty(
250241
Package package, Library lib, TopLevelVariable property) {
251242
TemplateData data =
252-
new TopLevelPropertyTemplateData(this, package, lib, property);
243+
new TopLevelPropertyTemplateData(_options, package, lib, property);
253244

254245
_build(path.joinAll(property.href.split('/')),
255246
_templates.topLevelPropertyTemplate, data);
@@ -258,14 +249,15 @@ class HtmlGeneratorInstance implements HtmlOptions {
258249
void generateTopLevelConstant(
259250
Package package, Library lib, TopLevelVariable property) {
260251
TemplateData data =
261-
new TopLevelConstTemplateData(this, package, lib, property);
252+
new TopLevelConstTemplateData(_options, package, lib, property);
262253

263254
_build(path.joinAll(property.href.split('/')),
264255
_templates.topLevelConstantTemplate, data);
265256
}
266257

267258
void generateTypeDef(Package package, Library lib, Typedef typeDef) {
268-
TemplateData data = new TypedefTemplateData(this, package, lib, typeDef);
259+
TemplateData data =
260+
new TypedefTemplateData(_options, package, lib, typeDef);
269261

270262
_build(path.joinAll(typeDef.href.split('/')), _templates.typeDefTemplate,
271263
data);

lib/src/html/template_data.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import '../model.dart';
77
abstract class HtmlOptions {
88
String get relCanonicalPrefix;
99
String get toolVersion;
10+
bool get useCategories;
1011
}
1112

1213
class Subnav {
@@ -62,6 +63,7 @@ abstract class TemplateData<T extends Documentable> {
6263
T get self;
6364
String get version => htmlOptions.toolVersion;
6465
String get relCanonicalPrefix => htmlOptions.relCanonicalPrefix;
66+
bool get useCategories => htmlOptions.useCategories;
6567

6668
Iterable<Subnav> getSubNavItems() => <Subnav>[];
6769

@@ -84,13 +86,11 @@ abstract class TemplateData<T extends Documentable> {
8486
}
8587

8688
class PackageTemplateData extends TemplateData<Package> {
87-
PackageTemplateData(
88-
HtmlOptions htmlOptions, Package package, this.useCategories)
89+
PackageTemplateData(HtmlOptions htmlOptions, Package package)
8990
: super(htmlOptions, package);
9091

9192
@override
9293
bool get includeVersion => true;
93-
final bool useCategories;
9494
@override
9595
List get navLinks => [];
9696
@override
@@ -123,15 +123,13 @@ class PackageTemplateData extends TemplateData<Package> {
123123
class LibraryTemplateData extends TemplateData<Library> {
124124
final Library library;
125125

126-
LibraryTemplateData(HtmlOptions htmlOptions, Package package, this.library,
127-
this.useCategories)
126+
LibraryTemplateData(HtmlOptions htmlOptions, Package package, this.library)
128127
: super(htmlOptions, package);
129128

130129
@override
131130
String get title => '${library.name} library - Dart API';
132131
@override
133132
String get documentation => library.documentation;
134-
final bool useCategories;
135133
@override
136134
String get htmlBase => '..';
137135
@override

0 commit comments

Comments
 (0)