Skip to content

Commit 611f5a9

Browse files
authored
Remove packageGraph from TemplateData. (#2379)
**Breaking change** for any custom templates which reference `packageGraph`. This opens up too many possibilities for templates, and requires knowledge of the PackageGraph class's interface. Instead, offer `localPackages` iterator and `defaultPackage` field on TemplateData.
1 parent 3f0b8ba commit 611f5a9

File tree

8 files changed

+79
-83
lines changed

8 files changed

+79
-83
lines changed

lib/src/generator/template_data.dart

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ abstract class TemplateOptions {
1111
}
1212

1313
abstract class TemplateData<T extends Documentable> {
14-
final PackageGraph packageGraph;
14+
final PackageGraph _packageGraph;
1515
final TemplateOptions htmlOptions;
1616

17-
TemplateData(this.htmlOptions, this.packageGraph);
17+
TemplateData(this.htmlOptions, this._packageGraph);
1818

1919
String get title;
2020
String get layoutTitle;
@@ -48,8 +48,14 @@ abstract class TemplateData<T extends Documentable> {
4848
return '';
4949
}
5050

51+
List<Package> get localPackages => _packageGraph.localPackages;
52+
53+
Package get defaultPackage => _packageGraph.defaultPackage;
54+
55+
bool get hasFooterVersion => _packageGraph.hasFooterVersion;
56+
5157
String _layoutTitle(String name, String kind, bool isDeprecated) =>
52-
packageGraph.rendererFactory.templateRenderer
58+
_packageGraph.rendererFactory.templateRenderer
5359
.composeLayoutTitle(name, kind, isDeprecated);
5460
}
5561

@@ -125,7 +131,7 @@ class LibraryTemplateData extends TemplateData<Library> {
125131
String get metaDescription =>
126132
'${library.name} library API docs, for the Dart programming language.';
127133
@override
128-
List<Documentable> get navLinks => [packageGraph.defaultPackage];
134+
List<Documentable> get navLinks => [_packageGraph.defaultPackage];
129135

130136
@override
131137
String get layoutTitle =>
@@ -173,7 +179,7 @@ class ClassTemplateData<T extends Class> extends TemplateData<T> {
173179
String get layoutTitle => _layoutTitle(
174180
clazz.nameWithLinkedGenerics, clazz.fullkind, clazz.isDeprecated);
175181
@override
176-
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
182+
List<Documentable> get navLinks => [_packageGraph.defaultPackage, library];
177183
@override
178184
String get htmlBase => '../';
179185

@@ -182,14 +188,10 @@ class ClassTemplateData<T extends Class> extends TemplateData<T> {
182188
return _objectType;
183189
}
184190

185-
var dc = packageGraph.libraries
191+
var dc = _packageGraph.libraries
186192
.firstWhere((it) => it.name == 'dart:core', orElse: () => null);
187193

188-
if (dc == null) {
189-
return _objectType = null;
190-
}
191-
192-
return _objectType = dc.getClassByName('Object');
194+
return _objectType = dc?.getClassByName('Object');
193195
}
194196
}
195197

@@ -216,7 +218,7 @@ class ExtensionTemplateData<T extends Extension> extends TemplateData<T> {
216218
@override
217219
String get layoutTitle => _layoutTitle(extension.name, extension.kind, false);
218220
@override
219-
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
221+
List<Documentable> get navLinks => [_packageGraph.defaultPackage, library];
220222
@override
221223
String get htmlBase => '../';
222224
}
@@ -236,7 +238,7 @@ class ConstructorTemplateData extends TemplateData<Constructor> {
236238
String get layoutTitle => _layoutTitle(
237239
constructor.name, constructor.fullKind, constructor.isDeprecated);
238240
@override
239-
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
241+
List<Documentable> get navLinks => [_packageGraph.defaultPackage, library];
240242
@override
241243
List<Container> get navLinksWithGenerics => [clazz];
242244
@override
@@ -283,7 +285,7 @@ class FunctionTemplateData extends TemplateData<ModelFunction> {
283285
'API docs for the ${function.name} function from the '
284286
'${library.name} library, for the Dart programming language.';
285287
@override
286-
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
288+
List<Documentable> get navLinks => [_packageGraph.defaultPackage, library];
287289
@override
288290
String get htmlBase => '../';
289291
}
@@ -314,7 +316,7 @@ class MethodTemplateData extends TemplateData<Method> {
314316
'API docs for the ${method.name} method from the '
315317
'${container.name} ${containerDesc}, for the Dart programming language.';
316318
@override
317-
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
319+
List<Documentable> get navLinks => [_packageGraph.defaultPackage, library];
318320
@override
319321
List<Container> get navLinksWithGenerics => [container];
320322
@override
@@ -348,7 +350,7 @@ class PropertyTemplateData extends TemplateData<Field> {
348350
'API docs for the ${property.name} ${property.kind} from the '
349351
'${container.name} ${containerDesc}, for the Dart programming language.';
350352
@override
351-
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
353+
List<Documentable> get navLinks => [_packageGraph.defaultPackage, library];
352354
@override
353355
List<Container> get navLinksWithGenerics => [container];
354356
@override
@@ -377,7 +379,7 @@ class TypedefTemplateData extends TemplateData<Typedef> {
377379
'API docs for the ${typeDef.name} property from the '
378380
'${library.name} library, for the Dart programming language.';
379381
@override
380-
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
382+
List<Documentable> get navLinks => [_packageGraph.defaultPackage, library];
381383
@override
382384
String get htmlBase => '../';
383385
}
@@ -404,7 +406,7 @@ class TopLevelPropertyTemplateData extends TemplateData<TopLevelVariable> {
404406
'API docs for the ${property.name} $_type from the '
405407
'${library.name} library, for the Dart programming language.';
406408
@override
407-
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
409+
List<Documentable> get navLinks => [_packageGraph.defaultPackage, library];
408410
@override
409411
String get htmlBase => '../';
410412

lib/templates/html/_footer.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
<footer>
44
<span class="no-break">
5-
{{packageGraph.defaultPackage.name}}
6-
{{#packageGraph.hasFooterVersion}}
7-
{{packageGraph.defaultPackage.version}}
8-
{{/packageGraph.hasFooterVersion}}
5+
{{defaultPackage.name}}
6+
{{#hasFooterVersion}}
7+
{{defaultPackage.version}}
8+
{{/hasFooterVersion}}
99
</span>
1010

1111
{{! footer-text placeholder }}

lib/templates/html/_packages.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<ol>
2-
{{#packageGraph.localPackages}}
2+
{{#localPackages}}
33
{{#isFirstPackage}}
44
{{#hasDocumentedCategories}}
55
<li class="section-title">Topics</li>
@@ -21,5 +21,5 @@
2121
<li class="section-subitem">{{{linkedName}}}</li>
2222
{{/publicLibraries}}
2323
{{/categoriesWithPublicLibraries}}
24-
{{/packageGraph.localPackages}}
24+
{{/localPackages}}
2525
</ol>

lib/templates/html/index.html

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,31 @@ <h5 class="hidden-xs"><span class="package-name">{{self.name}}</span> <span clas
77
</div>
88

99
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
10-
{{#packageGraph.defaultPackage}}
10+
{{#defaultPackage}}
1111
{{>documentation}}
12-
{{/packageGraph.defaultPackage}}
12+
{{/defaultPackage}}
1313

14-
{{#packageGraph}}
15-
{{#localPackages}}
16-
<section class="summary">
17-
{{#isFirstPackage}}
18-
<h2>Libraries</h2>
19-
{{/isFirstPackage}}
20-
{{^isFirstPackage}}
21-
<h2>{{name}}</h2>
22-
{{/isFirstPackage}}
23-
<dl>
24-
{{#defaultCategory.publicLibraries}}
14+
{{#localPackages}}
15+
<section class="summary">
16+
{{#isFirstPackage}}
17+
<h2>Libraries</h2>
18+
{{/isFirstPackage}}
19+
{{^isFirstPackage}}
20+
<h2>{{name}}</h2>
21+
{{/isFirstPackage}}
22+
<dl>
23+
{{#defaultCategory.publicLibraries}}
24+
{{>library}}
25+
{{/defaultCategory.publicLibraries}}
26+
{{#categoriesWithPublicLibraries}}
27+
<h3>{{name}}</h3>
28+
{{#publicLibraries}}
2529
{{>library}}
26-
{{/defaultCategory.publicLibraries}}
27-
{{#categoriesWithPublicLibraries}}
28-
<h3>{{name}}</h3>
29-
{{#publicLibraries}}
30-
{{>library}}
31-
{{/publicLibraries}}
32-
{{/categoriesWithPublicLibraries}}
33-
</dl>
34-
</section>
35-
{{/localPackages}}
36-
{{/packageGraph}}
30+
{{/publicLibraries}}
31+
{{/categoriesWithPublicLibraries}}
32+
</dl>
33+
</section>
34+
{{/localPackages}}
3735

3836
</div> <!-- /.main-content -->
3937

lib/templates/md/index.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
# {{ title }}
44

5-
{{#packageGraph.defaultPackage}}
5+
{{#defaultPackage}}
66
{{>documentation}}
7-
{{/packageGraph.defaultPackage}}
7+
{{/defaultPackage}}
88

9-
{{#packageGraph}}
109
{{#localPackages}}
1110
{{#isFirstPackage}}
1211
## Libraries
@@ -27,6 +26,5 @@
2726
{{/publicLibraries}}
2827
{{/categoriesWithPublicLibraries}}
2928
{{/localPackages}}
30-
{{/packageGraph}}
3129

3230
{{>footer}}

testing/test_package_custom_templates/templates/_footer.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
<footer>
44
<span class="no-break">
5-
{{packageGraph.defaultPackage.name}}
6-
{{#packageGraph.hasFooterVersion}}
7-
{{packageGraph.defaultPackage.version}}
8-
{{/packageGraph.hasFooterVersion}}
5+
{{defaultPackage.name}}
6+
{{#hasFooterVersion}}
7+
{{defaultPackage.version}}
8+
{{/hasFooterVersion}}
99
</span>
1010

1111
{{! footer-text placeholder }}

testing/test_package_custom_templates/templates/_packages.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<ol>
2-
{{#packageGraph.localPackages}}
2+
{{#localPackages}}
33
{{#isFirstPackage}}
44
{{#hasDocumentedCategories}}
55
<li class="section-title">Topics</li>
@@ -21,5 +21,5 @@
2121
<li class="section-subitem">{{{linkedName}}}</li>
2222
{{/publicLibraries}}
2323
{{/categoriesWithPublicLibraries}}
24-
{{/packageGraph.localPackages}}
24+
{{/localPackages}}
2525
</ol>

testing/test_package_custom_templates/templates/index.html

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,31 @@ <h5 class="hidden-xs"><span class="package-name">{{self.name}}</span> <span clas
1010

1111

1212
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
13-
{{#packageGraph.defaultPackage}}
13+
{{#defaultPackage}}
1414
{{>documentation}}
15-
{{/packageGraph.defaultPackage}}
16-
17-
{{#packageGraph}}
18-
{{#localPackages}}
19-
<section class="summary">
20-
{{#isFirstPackage}}
21-
<h2>Libraries</h2>
22-
{{/isFirstPackage}}
23-
{{^isFirstPackage}}
24-
<h2>{{name}}</h2>
25-
{{/isFirstPackage}}
26-
<dl>
27-
{{#defaultCategory.publicLibraries}}
15+
{{/defaultPackage}}
16+
17+
{{#localPackages}}
18+
<section class="summary">
19+
{{#isFirstPackage}}
20+
<h2>Libraries</h2>
21+
{{/isFirstPackage}}
22+
{{^isFirstPackage}}
23+
<h2>{{name}}</h2>
24+
{{/isFirstPackage}}
25+
<dl>
26+
{{#defaultCategory.publicLibraries}}
27+
{{>library}}
28+
{{/defaultCategory.publicLibraries}}
29+
{{#categoriesWithPublicLibraries}}
30+
<h3>{{name}}</h3>
31+
{{#publicLibraries}}
2832
{{>library}}
29-
{{/defaultCategory.publicLibraries}}
30-
{{#categoriesWithPublicLibraries}}
31-
<h3>{{name}}</h3>
32-
{{#publicLibraries}}
33-
{{>library}}
34-
{{/publicLibraries}}
35-
{{/categoriesWithPublicLibraries}}
36-
</dl>
37-
</section>
38-
{{/localPackages}}
39-
{{/packageGraph}}
33+
{{/publicLibraries}}
34+
{{/categoriesWithPublicLibraries}}
35+
</dl>
36+
</section>
37+
{{/localPackages}}
4038

4139
</div> <!-- /.main-content -->
4240

0 commit comments

Comments
 (0)