From 9cfcc50c2043f22312ffc9981048c63eb576fec0 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Wed, 7 Oct 2020 15:24:10 -0700 Subject: [PATCH] Remove packageGraph from TemplateData. **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. --- lib/src/generator/template_data.dart | 38 ++++++++------- lib/templates/html/_footer.html | 8 ++-- lib/templates/html/_packages.html | 4 +- lib/templates/html/index.html | 46 +++++++++--------- lib/templates/md/index.md | 6 +-- .../templates/_footer.html | 8 ++-- .../templates/_packages.html | 4 +- .../templates/index.html | 48 +++++++++---------- 8 files changed, 79 insertions(+), 83 deletions(-) diff --git a/lib/src/generator/template_data.dart b/lib/src/generator/template_data.dart index 8ca6f7a49c..a4d5b16289 100644 --- a/lib/src/generator/template_data.dart +++ b/lib/src/generator/template_data.dart @@ -11,10 +11,10 @@ abstract class TemplateOptions { } abstract class TemplateData { - final PackageGraph packageGraph; + final PackageGraph _packageGraph; final TemplateOptions htmlOptions; - TemplateData(this.htmlOptions, this.packageGraph); + TemplateData(this.htmlOptions, this._packageGraph); String get title; String get layoutTitle; @@ -48,8 +48,14 @@ abstract class TemplateData { return ''; } + List get localPackages => _packageGraph.localPackages; + + Package get defaultPackage => _packageGraph.defaultPackage; + + bool get hasFooterVersion => _packageGraph.hasFooterVersion; + String _layoutTitle(String name, String kind, bool isDeprecated) => - packageGraph.rendererFactory.templateRenderer + _packageGraph.rendererFactory.templateRenderer .composeLayoutTitle(name, kind, isDeprecated); } @@ -125,7 +131,7 @@ class LibraryTemplateData extends TemplateData { String get metaDescription => '${library.name} library API docs, for the Dart programming language.'; @override - List get navLinks => [packageGraph.defaultPackage]; + List get navLinks => [_packageGraph.defaultPackage]; @override String get layoutTitle => @@ -173,7 +179,7 @@ class ClassTemplateData extends TemplateData { String get layoutTitle => _layoutTitle( clazz.nameWithLinkedGenerics, clazz.fullkind, clazz.isDeprecated); @override - List get navLinks => [packageGraph.defaultPackage, library]; + List get navLinks => [_packageGraph.defaultPackage, library]; @override String get htmlBase => '../'; @@ -182,14 +188,10 @@ class ClassTemplateData extends TemplateData { return _objectType; } - var dc = packageGraph.libraries + var dc = _packageGraph.libraries .firstWhere((it) => it.name == 'dart:core', orElse: () => null); - if (dc == null) { - return _objectType = null; - } - - return _objectType = dc.getClassByName('Object'); + return _objectType = dc?.getClassByName('Object'); } } @@ -216,7 +218,7 @@ class ExtensionTemplateData extends TemplateData { @override String get layoutTitle => _layoutTitle(extension.name, extension.kind, false); @override - List get navLinks => [packageGraph.defaultPackage, library]; + List get navLinks => [_packageGraph.defaultPackage, library]; @override String get htmlBase => '../'; } @@ -236,7 +238,7 @@ class ConstructorTemplateData extends TemplateData { String get layoutTitle => _layoutTitle( constructor.name, constructor.fullKind, constructor.isDeprecated); @override - List get navLinks => [packageGraph.defaultPackage, library]; + List get navLinks => [_packageGraph.defaultPackage, library]; @override List get navLinksWithGenerics => [clazz]; @override @@ -283,7 +285,7 @@ class FunctionTemplateData extends TemplateData { 'API docs for the ${function.name} function from the ' '${library.name} library, for the Dart programming language.'; @override - List get navLinks => [packageGraph.defaultPackage, library]; + List get navLinks => [_packageGraph.defaultPackage, library]; @override String get htmlBase => '../'; } @@ -314,7 +316,7 @@ class MethodTemplateData extends TemplateData { 'API docs for the ${method.name} method from the ' '${container.name} ${containerDesc}, for the Dart programming language.'; @override - List get navLinks => [packageGraph.defaultPackage, library]; + List get navLinks => [_packageGraph.defaultPackage, library]; @override List get navLinksWithGenerics => [container]; @override @@ -348,7 +350,7 @@ class PropertyTemplateData extends TemplateData { 'API docs for the ${property.name} ${property.kind} from the ' '${container.name} ${containerDesc}, for the Dart programming language.'; @override - List get navLinks => [packageGraph.defaultPackage, library]; + List get navLinks => [_packageGraph.defaultPackage, library]; @override List get navLinksWithGenerics => [container]; @override @@ -377,7 +379,7 @@ class TypedefTemplateData extends TemplateData { 'API docs for the ${typeDef.name} property from the ' '${library.name} library, for the Dart programming language.'; @override - List get navLinks => [packageGraph.defaultPackage, library]; + List get navLinks => [_packageGraph.defaultPackage, library]; @override String get htmlBase => '../'; } @@ -404,7 +406,7 @@ class TopLevelPropertyTemplateData extends TemplateData { 'API docs for the ${property.name} $_type from the ' '${library.name} library, for the Dart programming language.'; @override - List get navLinks => [packageGraph.defaultPackage, library]; + List get navLinks => [_packageGraph.defaultPackage, library]; @override String get htmlBase => '../'; diff --git a/lib/templates/html/_footer.html b/lib/templates/html/_footer.html index d23b072dc0..ee1ef5f747 100644 --- a/lib/templates/html/_footer.html +++ b/lib/templates/html/_footer.html @@ -2,10 +2,10 @@