Access TemplateRenderer from PackageGraph like other renderers (#2114)
* Consolidate property templates
* Access TemplateRenderer from package graph
* Update test file
diff --git a/lib/src/html/html_generator_instance.dart b/lib/src/html/html_generator_instance.dart
index b82bbc4..e82fe1b 100644
--- a/lib/src/html/html_generator_instance.dart
+++ b/lib/src/html/html_generator_instance.dart
@@ -8,7 +8,6 @@
import 'package:collection/collection.dart' show compareNatural;
import 'package:dartdoc/src/html/html_generator.dart' show HtmlGeneratorOptions;
-import 'package:dartdoc/src/html/template_render_helper.dart';
import 'package:dartdoc/src/html/resource_loader.dart' as loader;
import 'package:dartdoc/src/html/resources.g.dart' as resources;
import 'package:dartdoc/src/html/template_data.dart';
@@ -29,7 +28,6 @@
final PackageGraph _packageGraph;
final List<Indexable> _indexedElements = <Indexable>[];
final FileWriter _writer;
- final HtmlRenderHelper _templateHelper = HtmlRenderHelper();
HtmlGeneratorInstance(
this._options, this._templates, this._packageGraph, this._writer);
@@ -281,8 +279,7 @@
}
void generatePackage(PackageGraph packageGraph, Package package) {
- TemplateData data =
- PackageTemplateData(_options, packageGraph, _templateHelper, package);
+ TemplateData data = PackageTemplateData(_options, packageGraph, package);
logInfo('documenting ${package.name}');
_build(package.filePath, _templates.indexTemplate, data);
@@ -292,8 +289,7 @@
void generateCategory(PackageGraph packageGraph, Category category) {
logInfo(
'Generating docs for category ${category.name} from ${category.package.fullyQualifiedName}...');
- TemplateData data =
- CategoryTemplateData(_options, packageGraph, _templateHelper, category);
+ TemplateData data = CategoryTemplateData(_options, packageGraph, category);
_build(category.filePath, _templates.categoryTemplate, data);
}
@@ -304,98 +300,86 @@
if (!lib.isAnonymous && !lib.hasDocumentation) {
packageGraph.warnOnElement(lib, PackageWarning.noLibraryLevelDocs);
}
- TemplateData data =
- LibraryTemplateData(_options, packageGraph, _templateHelper, lib);
+ TemplateData data = LibraryTemplateData(_options, packageGraph, lib);
_build(lib.filePath, _templates.libraryTemplate, data);
}
void generateClass(PackageGraph packageGraph, Library lib, Class clazz) {
- TemplateData data =
- ClassTemplateData(_options, packageGraph, _templateHelper, lib, clazz);
+ TemplateData data = ClassTemplateData(_options, packageGraph, lib, clazz);
_build(clazz.filePath, _templates.classTemplate, data);
}
void generateExtension(
PackageGraph packageGraph, Library lib, Extension extension) {
- TemplateData data = ExtensionTemplateData(
- _options, packageGraph, _templateHelper, lib, extension);
+ TemplateData data =
+ ExtensionTemplateData(_options, packageGraph, lib, extension);
_build(extension.filePath, _templates.extensionTemplate, data);
}
void generateMixins(PackageGraph packageGraph, Library lib, Mixin mixin) {
- TemplateData data =
- MixinTemplateData(_options, packageGraph, _templateHelper, lib, mixin);
+ TemplateData data = MixinTemplateData(_options, packageGraph, lib, mixin);
_build(mixin.filePath, _templates.mixinTemplate, data);
}
void generateConstructor(PackageGraph packageGraph, Library lib, Class clazz,
Constructor constructor) {
TemplateData data = ConstructorTemplateData(
- _options, packageGraph, _templateHelper, lib, clazz, constructor);
+ _options, packageGraph, lib, clazz, constructor);
_build(constructor.filePath, _templates.constructorTemplate, data);
}
void generateEnum(PackageGraph packageGraph, Library lib, Enum eNum) {
- TemplateData data =
- EnumTemplateData(_options, packageGraph, _templateHelper, lib, eNum);
+ TemplateData data = EnumTemplateData(_options, packageGraph, lib, eNum);
_build(eNum.filePath, _templates.enumTemplate, data);
}
void generateFunction(
PackageGraph packageGraph, Library lib, ModelFunction function) {
- TemplateData data = FunctionTemplateData(
- _options, packageGraph, _templateHelper, lib, function);
+ TemplateData data =
+ FunctionTemplateData(_options, packageGraph, lib, function);
_build(function.filePath, _templates.functionTemplate, data);
}
void generateMethod(
PackageGraph packageGraph, Library lib, Container clazz, Method method) {
- TemplateData data = MethodTemplateData(
- _options, packageGraph, _templateHelper, lib, clazz, method);
+ TemplateData data =
+ MethodTemplateData(_options, packageGraph, lib, clazz, method);
_build(method.filePath, _templates.methodTemplate, data);
}
- void generateConstant(
- PackageGraph packageGraph, Library lib, Container clazz, Field property) {
- TemplateData data = ConstantTemplateData(
- _options, packageGraph, _templateHelper, lib, clazz, property);
-
- _build(property.filePath, _templates.constantTemplate, data);
- }
+ void generateConstant(PackageGraph packageGraph, Library lib, Container clazz,
+ Field property) =>
+ generateProperty(packageGraph, lib, clazz, property);
void generateProperty(
PackageGraph packageGraph, Library lib, Container clazz, Field property) {
- TemplateData data = PropertyTemplateData(
- _options, packageGraph, _templateHelper, lib, clazz, property);
+ TemplateData data =
+ PropertyTemplateData(_options, packageGraph, lib, clazz, property);
_build(property.filePath, _templates.propertyTemplate, data);
}
void generateTopLevelProperty(
PackageGraph packageGraph, Library lib, TopLevelVariable property) {
- TemplateData data = TopLevelPropertyTemplateData(
- _options, packageGraph, _templateHelper, lib, property);
+ TemplateData data =
+ TopLevelPropertyTemplateData(_options, packageGraph, lib, property);
_build(property.filePath, _templates.topLevelPropertyTemplate, data);
}
void generateTopLevelConstant(
- PackageGraph packageGraph, Library lib, TopLevelVariable property) {
- TemplateData data = TopLevelConstTemplateData(
- _options, packageGraph, _templateHelper, lib, property);
-
- _build(property.filePath, _templates.topLevelConstantTemplate, data);
- }
+ PackageGraph packageGraph, Library lib, TopLevelVariable property) =>
+ generateTopLevelProperty(packageGraph, lib, property);
void generateTypeDef(
PackageGraph packageGraph, Library lib, Typedef typeDef) {
- TemplateData data = TypedefTemplateData(
- _options, packageGraph, _templateHelper, lib, typeDef);
+ TemplateData data =
+ TypedefTemplateData(_options, packageGraph, lib, typeDef);
_build(typeDef.filePath, _templates.typeDefTemplate, data);
}
diff --git a/lib/src/html/template_data.dart b/lib/src/html/template_data.dart
index 0bcef5e..464bff6 100644
--- a/lib/src/html/template_data.dart
+++ b/lib/src/html/template_data.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:dartdoc/src/html/template_render_helper.dart';
+import 'package:dartdoc/src/render/template_renderer.dart';
import 'package:dartdoc/src/model/model.dart';
abstract class HtmlOptions {
@@ -14,9 +14,8 @@
abstract class TemplateData<T extends Documentable> {
final PackageGraph packageGraph;
final HtmlOptions htmlOptions;
- final TemplateRenderHelper _renderHelper;
- TemplateData(this.htmlOptions, this.packageGraph, this._renderHelper);
+ TemplateData(this.htmlOptions, this.packageGraph);
String get title;
String get layoutTitle;
@@ -42,14 +41,15 @@
bool get useBaseHref => htmlOptions.useBaseHref;
String _layoutTitle(String name, String kind, bool isDeprecated) =>
- _renderHelper.composeLayoutTitle(name, kind, isDeprecated);
+ packageGraph.rendererFactory.templateRenderer
+ .composeLayoutTitle(name, kind, isDeprecated);
}
class PackageTemplateData extends TemplateData<Package> {
final Package package;
- PackageTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, this.package)
- : super(htmlOptions, packageGraph, renderHelper);
+ PackageTemplateData(
+ HtmlOptions htmlOptions, PackageGraph packageGraph, this.package)
+ : super(htmlOptions, packageGraph);
@override
bool get includeVersion => true;
@@ -77,9 +77,9 @@
class CategoryTemplateData extends TemplateData<Category> {
final Category category;
- CategoryTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, this.category)
- : super(htmlOptions, packageGraph, renderHelper);
+ CategoryTemplateData(
+ HtmlOptions htmlOptions, PackageGraph packageGraph, this.category)
+ : super(htmlOptions, packageGraph);
@override
String get title => '${category.name} ${category.kind} - Dart API';
@@ -104,9 +104,9 @@
class LibraryTemplateData extends TemplateData<Library> {
final Library library;
- LibraryTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, this.library)
- : super(htmlOptions, packageGraph, renderHelper);
+ LibraryTemplateData(
+ HtmlOptions htmlOptions, PackageGraph packageGraph, this.library)
+ : super(htmlOptions, packageGraph);
@override
String get title => '${library.name} library - Dart API';
@@ -131,8 +131,8 @@
final Mixin mixin;
MixinTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, Library library, this.mixin)
- : super(htmlOptions, packageGraph, renderHelper, library, mixin);
+ Library library, this.mixin)
+ : super(htmlOptions, packageGraph, library, mixin);
@override
Mixin get self => mixin;
@@ -145,8 +145,8 @@
Class _objectType;
ClassTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, this.library, this.clazz)
- : super(htmlOptions, packageGraph, renderHelper);
+ this.library, this.clazz)
+ : super(htmlOptions, packageGraph);
@override
T get self => clazz;
@@ -190,8 +190,8 @@
final Library library;
ExtensionTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, this.library, this.extension)
- : super(htmlOptions, packageGraph, renderHelper);
+ this.library, this.extension)
+ : super(htmlOptions, packageGraph);
@override
T get self => extension;
@@ -217,14 +217,9 @@
final Class clazz;
final Constructor constructor;
- ConstructorTemplateData(
- HtmlOptions htmlOptions,
- PackageGraph packageGraph,
- TemplateRenderHelper renderHelper,
- this.library,
- this.clazz,
- this.constructor)
- : super(htmlOptions, packageGraph, renderHelper);
+ ConstructorTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
+ this.library, this.clazz, this.constructor)
+ : super(htmlOptions, packageGraph);
@override
Constructor get self => constructor;
@@ -250,8 +245,8 @@
class EnumTemplateData extends ClassTemplateData<Enum> {
EnumTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, Library library, Enum eNum)
- : super(htmlOptions, packageGraph, renderHelper, library, eNum);
+ Library library, Enum eNum)
+ : super(htmlOptions, packageGraph, library, eNum);
Enum get eNum => clazz;
@override
@@ -263,8 +258,8 @@
final Library library;
FunctionTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, this.library, this.function)
- : super(htmlOptions, packageGraph, renderHelper);
+ this.library, this.function)
+ : super(htmlOptions, packageGraph);
@override
ModelFunction get self => function;
@@ -290,14 +285,9 @@
final Container container;
String containerDesc;
- MethodTemplateData(
- HtmlOptions htmlOptions,
- PackageGraph packageGraph,
- TemplateRenderHelper renderHelper,
- this.library,
- this.container,
- this.method)
- : super(htmlOptions, packageGraph, renderHelper) {
+ MethodTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
+ this.library, this.container, this.method)
+ : super(htmlOptions, packageGraph) {
containerDesc = container.isClass ? 'class' : 'extension';
}
@@ -328,14 +318,9 @@
final Field property;
String containerDesc;
- PropertyTemplateData(
- HtmlOptions htmlOptions,
- PackageGraph packageGraph,
- TemplateRenderHelper renderHelper,
- this.library,
- this.container,
- this.property)
- : super(htmlOptions, packageGraph, renderHelper) {
+ PropertyTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
+ this.library, this.container, this.property)
+ : super(htmlOptions, packageGraph) {
containerDesc = container.isClass ? 'class' : 'extension';
}
@@ -344,14 +329,14 @@
@override
String get title =>
- '${property.name} $type - ${container.name} ${containerDesc} - '
+ '${property.name} $_type - ${container.name} ${containerDesc} - '
'${library.name} library - Dart API';
@override
String get layoutTitle =>
- _layoutTitle(property.name, type, property.isDeprecated);
+ _layoutTitle(property.name, _type, property.isDeprecated);
@override
String get metaDescription =>
- 'API docs for the ${property.name} $type from the '
+ 'API docs for the ${property.name} $_type from the '
'${container.name} ${containerDesc}, for the Dart programming language.';
@override
List get navLinks => [packageGraph.defaultPackage, library];
@@ -360,22 +345,7 @@
@override
String get htmlBase => '../../';
- String get type => 'property';
-}
-
-class ConstantTemplateData extends PropertyTemplateData {
- ConstantTemplateData(
- HtmlOptions htmlOptions,
- PackageGraph packageGraph,
- TemplateRenderHelper renderHelper,
- Library library,
- Container container,
- Field property)
- : super(htmlOptions, packageGraph, renderHelper, library, container,
- property);
-
- @override
- String get type => 'constant';
+ String get _type => property.isConst ? 'constant' : 'property';
}
class TypedefTemplateData extends TemplateData<Typedef> {
@@ -383,8 +353,8 @@
final Typedef typeDef;
TypedefTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- TemplateRenderHelper renderHelper, this.library, this.typeDef)
- : super(htmlOptions, packageGraph, renderHelper);
+ this.library, this.typeDef)
+ : super(htmlOptions, packageGraph);
@override
Typedef get self => typeDef;
@@ -409,13 +379,9 @@
final Library library;
final TopLevelVariable property;
- TopLevelPropertyTemplateData(
- HtmlOptions htmlOptions,
- PackageGraph packageGraph,
- TemplateRenderHelper renderHelper,
- this.library,
- this.property)
- : super(htmlOptions, packageGraph, renderHelper);
+ TopLevelPropertyTemplateData(HtmlOptions htmlOptions,
+ PackageGraph packageGraph, this.library, this.property)
+ : super(htmlOptions, packageGraph);
@override
TopLevelVariable get self => property;
@@ -435,18 +401,5 @@
@override
String get htmlBase => '../';
- String get _type => 'property';
-}
-
-class TopLevelConstTemplateData extends TopLevelPropertyTemplateData {
- TopLevelConstTemplateData(
- HtmlOptions htmlOptions,
- PackageGraph packageGraph,
- TemplateRenderHelper renderHelper,
- Library library,
- TopLevelVariable property)
- : super(htmlOptions, packageGraph, renderHelper, library, property);
-
- @override
- String get _type => 'constant';
+ String get _type => property.isConst ? 'constant' : 'property';
}
diff --git a/lib/src/render/renderer_factory.dart b/lib/src/render/renderer_factory.dart
index 7144c3f..f878722 100644
--- a/lib/src/render/renderer_factory.dart
+++ b/lib/src/render/renderer_factory.dart
@@ -9,10 +9,13 @@
import 'package:dartdoc/src/render/enum_field_renderer.dart';
import 'package:dartdoc/src/render/model_element_renderer.dart';
import 'package:dartdoc/src/render/parameter_renderer.dart';
+import 'package:dartdoc/src/render/template_renderer.dart';
import 'package:dartdoc/src/render/type_parameters_renderer.dart';
import 'package:dartdoc/src/render/typedef_renderer.dart';
abstract class RendererFactory {
+ TemplateRenderer get templateRenderer;
+
CategoryRenderer get categoryRenderer;
DocumentationRenderer get documentationRenderer;
@@ -40,6 +43,9 @@
class HtmlRenderFactory extends RendererFactory {
@override
+ TemplateRenderer get templateRenderer => HtmlTemplateRenderer();
+
+ @override
CategoryRenderer get categoryRenderer => CategoryRendererHtml();
@override
diff --git a/lib/src/html/template_render_helper.dart b/lib/src/render/template_renderer.dart
similarity index 84%
rename from lib/src/html/template_render_helper.dart
rename to lib/src/render/template_renderer.dart
index bef51f3..3e0ed15 100644
--- a/lib/src/html/template_render_helper.dart
+++ b/lib/src/render/template_renderer.dart
@@ -2,11 +2,11 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-abstract class TemplateRenderHelper {
+abstract class TemplateRenderer {
String composeLayoutTitle(String name, String kind, bool isDeprecated);
}
-class HtmlRenderHelper implements TemplateRenderHelper {
+class HtmlTemplateRenderer implements TemplateRenderer {
@override
String composeLayoutTitle(String name, String kind, bool isDeprecated) {
if (isDeprecated) {
diff --git a/test/html/html_render_helper_test.dart b/test/html/html_template_renderer_test.dart
similarity index 61%
rename from test/html/html_render_helper_test.dart
rename to test/html/html_template_renderer_test.dart
index fb0fd1f..e0611b9 100644
--- a/test/html/html_render_helper_test.dart
+++ b/test/html/html_template_renderer_test.dart
@@ -2,24 +2,24 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:dartdoc/src/html/template_render_helper.dart';
+import 'package:dartdoc/src/render/template_renderer.dart';
import 'package:test/test.dart';
void main() {
- group('HtmlTemplateHelper', () {
- HtmlRenderHelper renderHelper;
+ group('HtmlTemplateRenderer', () {
+ HtmlTemplateRenderer renderer;
setUpAll(() {
- renderHelper = HtmlRenderHelper();
+ renderer = HtmlTemplateRenderer();
});
test('composeLayoutTitle', () {
- String test = renderHelper.composeLayoutTitle('Banana', 'Fruit', false);
+ String test = renderer.composeLayoutTitle('Banana', 'Fruit', false);
expect(test, equals('Banana Fruit'));
});
test('composeLayoutTitle deprecated', () {
- String test = renderHelper.composeLayoutTitle('Banana', 'Fruit', true);
+ String test = renderer.composeLayoutTitle('Banana', 'Fruit', true);
expect(test, equals('<span class="deprecated">Banana</span> Fruit'));
});
});