From c2f1fa777922204515e60a32abec3c341e833af4 Mon Sep 17 00:00:00 2001 From: Jonathan Koren Date: Thu, 13 Feb 2020 12:32:23 -0800 Subject: [PATCH 1/4] Create generator subpackage and start moving files --- lib/dartdoc.dart | 8 ++++---- lib/src/{ => generator}/empty_generator.dart | 2 +- lib/src/{ => generator}/generator.dart | 0 lib/src/{ => generator}/generator_frontend.dart | 2 +- lib/src/{ => generator}/generator_utils.dart | 0 lib/src/{html => generator}/html_generator.dart | 6 +++--- lib/src/{html => generator}/html_generator_backend.dart | 4 ++-- test/html_generator_test.dart | 6 +++--- 8 files changed, 14 insertions(+), 14 deletions(-) rename lib/src/{ => generator}/empty_generator.dart (95%) rename lib/src/{ => generator}/generator.dart (100%) rename lib/src/{ => generator}/generator_frontend.dart (99%) rename lib/src/{ => generator}/generator_utils.dart (100%) rename lib/src/{html => generator}/html_generator.dart (73%) rename lib/src/{html => generator}/html_generator_backend.dart (98%) diff --git a/lib/dartdoc.dart b/lib/dartdoc.dart index 91ec031fde..0e76ae5508 100644 --- a/lib/dartdoc.dart +++ b/lib/dartdoc.dart @@ -13,9 +13,9 @@ import 'dart:convert'; import 'dart:io'; import 'package:dartdoc/src/dartdoc_options.dart'; -import 'package:dartdoc/src/empty_generator.dart'; -import 'package:dartdoc/src/generator.dart'; -import 'package:dartdoc/src/html/html_generator.dart'; +import 'package:dartdoc/src/generator/empty_generator.dart'; +import 'package:dartdoc/src/generator/generator.dart'; +import 'package:dartdoc/src/generator/html_generator.dart'; import 'package:dartdoc/src/logging.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/package_meta.dart'; @@ -29,7 +29,7 @@ import 'package:path/path.dart' as path; export 'package:dartdoc/src/dartdoc_options.dart'; export 'package:dartdoc/src/element_type.dart'; -export 'package:dartdoc/src/generator.dart'; +export 'package:dartdoc/src/generator/generator.dart'; export 'package:dartdoc/src/model/model.dart'; export 'package:dartdoc/src/package_meta.dart'; diff --git a/lib/src/empty_generator.dart b/lib/src/generator/empty_generator.dart similarity index 95% rename from lib/src/empty_generator.dart rename to lib/src/generator/empty_generator.dart index 4e4ad8e524..3d069dfdf8 100644 --- a/lib/src/empty_generator.dart +++ b/lib/src/generator/empty_generator.dart @@ -3,7 +3,7 @@ library dartdoc.empty_generator; import 'dart:async'; import 'package:dartdoc/src/dartdoc_options.dart'; -import 'package:dartdoc/src/generator.dart'; +import 'package:dartdoc/src/generator/generator.dart'; import 'package:dartdoc/src/logging.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/model_utils.dart'; diff --git a/lib/src/generator.dart b/lib/src/generator/generator.dart similarity index 100% rename from lib/src/generator.dart rename to lib/src/generator/generator.dart diff --git a/lib/src/generator_frontend.dart b/lib/src/generator/generator_frontend.dart similarity index 99% rename from lib/src/generator_frontend.dart rename to lib/src/generator/generator_frontend.dart index 5b62800322..1f6225685a 100644 --- a/lib/src/generator_frontend.dart +++ b/lib/src/generator/generator_frontend.dart @@ -4,7 +4,7 @@ import 'dart:async'; -import 'package:dartdoc/src/generator.dart'; +import 'package:dartdoc/src/generator/generator.dart'; import 'package:dartdoc/src/logging.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/model_utils.dart'; diff --git a/lib/src/generator_utils.dart b/lib/src/generator/generator_utils.dart similarity index 100% rename from lib/src/generator_utils.dart rename to lib/src/generator/generator_utils.dart diff --git a/lib/src/html/html_generator.dart b/lib/src/generator/html_generator.dart similarity index 73% rename from lib/src/html/html_generator.dart rename to lib/src/generator/html_generator.dart index 9178840092..52c2c803ad 100644 --- a/lib/src/html/html_generator.dart +++ b/lib/src/generator/html_generator.dart @@ -7,9 +7,9 @@ library dartdoc.html_generator; import 'dart:async' show Future; import 'package:dartdoc/dartdoc.dart'; -import 'package:dartdoc/src/generator.dart'; -import 'package:dartdoc/src/generator_frontend.dart'; -import 'package:dartdoc/src/html/html_generator_backend.dart'; +import 'package:dartdoc/src/generator/generator.dart'; +import 'package:dartdoc/src/generator/generator_frontend.dart'; +import 'package:dartdoc/src/generator/html_generator_backend.dart'; Future initHtmlGenerator( DartdocGeneratorOptionContext context) async { diff --git a/lib/src/html/html_generator_backend.dart b/lib/src/generator/html_generator_backend.dart similarity index 98% rename from lib/src/html/html_generator_backend.dart rename to lib/src/generator/html_generator_backend.dart index b92e39e373..5c1457386e 100644 --- a/lib/src/html/html_generator_backend.dart +++ b/lib/src/generator/html_generator_backend.dart @@ -5,8 +5,8 @@ import 'dart:io'; import 'package:dartdoc/dartdoc.dart'; -import 'package:dartdoc/src/generator_frontend.dart'; -import 'package:dartdoc/src/generator_utils.dart' as generator_util; +import 'package:dartdoc/src/generator/generator_frontend.dart'; +import 'package:dartdoc/src/generator/generator_utils.dart' as generator_util; 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'; diff --git a/test/html_generator_test.dart b/test/html_generator_test.dart index a9b87d4483..4fc32c9217 100644 --- a/test/html_generator_test.dart +++ b/test/html_generator_test.dart @@ -7,10 +7,10 @@ library dartdoc.html_generator_test; import 'dart:io' show File, Directory; import 'package:dartdoc/dartdoc.dart'; -import 'package:dartdoc/src/generator_frontend.dart'; -import 'package:dartdoc/src/html/html_generator_backend.dart'; -import 'package:dartdoc/src/html/templates.dart'; +import 'package:dartdoc/src/generator/generator_frontend.dart'; +import 'package:dartdoc/src/generator/html_generator_backend.dart'; import 'package:dartdoc/src/html/resources.g.dart'; +import 'package:dartdoc/src/html/templates.dart'; import 'package:dartdoc/src/model/package_graph.dart'; import 'package:dartdoc/src/warnings.dart'; import 'package:path/path.dart' as path; From 91a20da609eb699217ebe7d4f1404da2bf92b1e1 Mon Sep 17 00:00:00 2001 From: Jonathan Koren Date: Thu, 13 Feb 2020 13:22:00 -0800 Subject: [PATCH 2/4] Make a base backend to extend from Html and Markdown don't need drastically different backends, so we can house most of the logic in a base class. --- ...nd.dart => dartdoc_generator_backend.dart} | 139 +++++++----------- lib/src/generator/html_generator.dart | 51 ++++++- lib/src/html/template_data.dart | 32 ++-- test/html_generator_test.dart | 2 +- 4 files changed, 118 insertions(+), 106 deletions(-) rename lib/src/generator/{html_generator_backend.dart => dartdoc_generator_backend.dart} (50%) diff --git a/lib/src/generator/html_generator_backend.dart b/lib/src/generator/dartdoc_generator_backend.dart similarity index 50% rename from lib/src/generator/html_generator_backend.dart rename to lib/src/generator/dartdoc_generator_backend.dart index 5c1457386e..ad7b78a4ca 100644 --- a/lib/src/generator/html_generator_backend.dart +++ b/lib/src/generator/dartdoc_generator_backend.dart @@ -2,13 +2,9 @@ // 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 'dart:io'; - import 'package:dartdoc/dartdoc.dart'; import 'package:dartdoc/src/generator/generator_frontend.dart'; import 'package:dartdoc/src/generator/generator_utils.dart' as generator_util; -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'; import 'package:dartdoc/src/html/templates.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -18,8 +14,8 @@ import 'package:dartdoc/src/warnings.dart'; import 'package:mustache/mustache.dart'; import 'package:path/path.dart' as path; -/// Configuration options for the html backend. -class HtmlBackendOptions implements HtmlOptions { +/// Configuration options for the Dartdoc's default backend. +class DartdocGeneratorBackendOptions implements TemplateOptions { @override final String relCanonicalPrefix; @override @@ -32,7 +28,15 @@ class HtmlBackendOptions implements HtmlOptions { @override final bool useBaseHref; - HtmlBackendOptions( + DartdocGeneratorBackendOptions.fromContext( + DartdocGeneratorOptionContext context) + : relCanonicalPrefix = context.relCanonicalPrefix, + toolVersion = dartdocVersion, + favicon = context.favicon, + prettyIndexJson = context.prettyIndexJson, + useBaseHref = context.useBaseHref; + + DartdocGeneratorBackendOptions( {this.relCanonicalPrefix, this.toolVersion, this.favicon, @@ -40,34 +44,20 @@ class HtmlBackendOptions implements HtmlOptions { this.useBaseHref = false}); } -/// GeneratorBackend for html output. -class HtmlGeneratorBackend implements GeneratorBackend { - final HtmlBackendOptions _options; - final Templates _templates; - - static Future fromContext( - DartdocGeneratorOptionContext context) async { - Templates templates = await Templates.fromContext(context); - // TODO(jcollins-g): Rationalize based on GeneratorContext all the way down - // through the generators. - HtmlOptions options = HtmlBackendOptions( - relCanonicalPrefix: context.relCanonicalPrefix, - toolVersion: dartdocVersion, - favicon: context.favicon, - prettyIndexJson: context.prettyIndexJson, - useBaseHref: context.useBaseHref, - ); - return HtmlGeneratorBackend(options, templates); - } - - HtmlGeneratorBackend(HtmlBackendOptions options, this._templates) - : this._options = (options ?? HtmlBackendOptions()); +/// Base GeneratorBackend for Dartdoc's supported formats. +abstract class DartdocGeneratorBackend implements GeneratorBackend { + final DartdocGeneratorBackendOptions options; + final Templates templates; + + DartdocGeneratorBackend( + DartdocGeneratorBackendOptions options, this.templates) + : this.options = (options ?? DartdocGeneratorBackendOptions()); /// Helper method to bind template data and emit the content to the writer. - void _render(FileWriter writer, String filename, Template template, + void render(FileWriter writer, String filename, Template template, TemplateData data) { String content = template.renderString(data); - if (!_options.useBaseHref) { + if (!options.useBaseHref) { content = content.replaceAll(HTMLBASE_PLACEHOLDER, data.htmlBase); } writer.write(filename, content, @@ -78,8 +68,8 @@ class HtmlGeneratorBackend implements GeneratorBackend { void generateCategoryJson( FileWriter writer, List categories) { String json = generator_util.generateCategoryJson( - categories, _options.prettyIndexJson); - if (!_options.useBaseHref) { + categories, options.prettyIndexJson); + if (!options.useBaseHref) { json = json.replaceAll(HTMLBASE_PLACEHOLDER, ''); } writer.write(path.join('categories.json'), '${json}\n'); @@ -88,8 +78,8 @@ class HtmlGeneratorBackend implements GeneratorBackend { @override void generateSearchIndex(FileWriter writer, List indexedElements) { String json = generator_util.generateSearchIndexJson( - indexedElements, _options.prettyIndexJson); - if (!_options.useBaseHref) { + indexedElements, options.prettyIndexJson); + if (!options.useBaseHref) { json = json.replaceAll(HTMLBASE_PLACEHOLDER, ''); } writer.write(path.join('index.json'), '${json}\n'); @@ -97,80 +87,79 @@ class HtmlGeneratorBackend implements GeneratorBackend { @override void generatePackage(FileWriter writer, PackageGraph graph, Package package) { - TemplateData data = PackageTemplateData(_options, graph, package); - _render(writer, package.filePath, _templates.indexTemplate, data); - _render(writer, '__404error.html', _templates.errorTemplate, data); + TemplateData data = PackageTemplateData(options, graph, package); + render(writer, package.filePath, templates.indexTemplate, data); } @override void generateCategory( FileWriter writer, PackageGraph packageGraph, Category category) { - TemplateData data = CategoryTemplateData(_options, packageGraph, category); - _render(writer, category.filePath, _templates.categoryTemplate, data); + TemplateData data = CategoryTemplateData(options, packageGraph, category); + render(writer, category.filePath, templates.categoryTemplate, data); } @override void generateLibrary( FileWriter writer, PackageGraph packageGraph, Library lib) { - TemplateData data = LibraryTemplateData(_options, packageGraph, lib); - _render(writer, lib.filePath, _templates.libraryTemplate, data); + TemplateData data = LibraryTemplateData(options, packageGraph, lib); + render(writer, lib.filePath, templates.libraryTemplate, data); } @override void generateClass( FileWriter writer, PackageGraph packageGraph, Library lib, Class clazz) { - TemplateData data = ClassTemplateData(_options, packageGraph, lib, clazz); - _render(writer, clazz.filePath, _templates.classTemplate, data); + TemplateData data = ClassTemplateData(options, packageGraph, lib, clazz); + render(writer, clazz.filePath, templates.classTemplate, data); } @override void generateExtension(FileWriter writer, PackageGraph packageGraph, Library lib, Extension extension) { TemplateData data = - ExtensionTemplateData(_options, packageGraph, lib, extension); - _render(writer, extension.filePath, _templates.extensionTemplate, data); + ExtensionTemplateData(options, packageGraph, lib, extension); + render(writer, extension.filePath, templates.extensionTemplate, data); } @override void generateMixin( FileWriter writer, PackageGraph packageGraph, Library lib, Mixin mixin) { - TemplateData data = MixinTemplateData(_options, packageGraph, lib, mixin); - _render(writer, mixin.filePath, _templates.mixinTemplate, data); + TemplateData data = MixinTemplateData(options, packageGraph, lib, mixin); + render(writer, mixin.filePath, templates.mixinTemplate, data); } @override void generateConstructor(FileWriter writer, PackageGraph packageGraph, Library lib, Class clazz, Constructor constructor) { TemplateData data = ConstructorTemplateData( - _options, packageGraph, lib, clazz, constructor); + options, packageGraph, lib, clazz, constructor); - _render(writer, constructor.filePath, _templates.constructorTemplate, data); + render(writer, constructor.filePath, templates.constructorTemplate, data); } @override void generateEnum( FileWriter writer, PackageGraph packageGraph, Library lib, Enum eNum) { - TemplateData data = EnumTemplateData(_options, packageGraph, lib, eNum); + TemplateData data = EnumTemplateData(options, packageGraph, lib, eNum); - _render(writer, eNum.filePath, _templates.enumTemplate, data); + render(writer, eNum.filePath, templates.enumTemplate, data); } @override void generateFunction(FileWriter writer, PackageGraph packageGraph, Library lib, ModelFunction function) { TemplateData data = - FunctionTemplateData(_options, packageGraph, lib, function); + FunctionTemplateData(options, packageGraph, lib, function); - _render(writer, function.filePath, _templates.functionTemplate, data); + render(writer, function.filePath, templates.functionTemplate, data); } @override void generateMethod(FileWriter writer, PackageGraph packageGraph, Library lib, Container clazz, Method method) { TemplateData data = - MethodTemplateData(_options, packageGraph, lib, clazz, method); + MethodTemplateData(options, packageGraph, lib, clazz, method); - _render(writer, method.filePath, _templates.methodTemplate, data); + render(writer, method.filePath, templates.methodTemplate, data); } @override @@ -182,19 +171,19 @@ class HtmlGeneratorBackend implements GeneratorBackend { void generateProperty(FileWriter writer, PackageGraph packageGraph, Library lib, Container clazz, Field property) { TemplateData data = - PropertyTemplateData(_options, packageGraph, lib, clazz, property); + PropertyTemplateData(options, packageGraph, lib, clazz, property); - _render(writer, property.filePath, _templates.propertyTemplate, data); + render(writer, property.filePath, templates.propertyTemplate, data); } @override void generateTopLevelProperty(FileWriter writer, PackageGraph packageGraph, Library lib, TopLevelVariable property) { TemplateData data = - TopLevelPropertyTemplateData(_options, packageGraph, lib, property); + TopLevelPropertyTemplateData(options, packageGraph, lib, property); - _render( - writer, property.filePath, _templates.topLevelPropertyTemplate, data); + render( + writer, property.filePath, templates.topLevelPropertyTemplate, data); } @override @@ -206,32 +195,8 @@ class HtmlGeneratorBackend implements GeneratorBackend { void generateTypeDef(FileWriter writer, PackageGraph packageGraph, Library lib, Typedef typeDef) { TemplateData data = - TypedefTemplateData(_options, packageGraph, lib, typeDef); - - _render(writer, typeDef.filePath, _templates.typeDefTemplate, data); - } + TypedefTemplateData(options, packageGraph, lib, typeDef); - @override - void generateAdditionalFiles(FileWriter writer, PackageGraph graph) async { - await _copyResources(writer); - if (_options.favicon != null) { - // Allow overwrite of favicon. - var bytes = File(_options.favicon).readAsBytesSync(); - writer.write(path.join('static-assets', 'favicon.png'), bytes, - allowOverwrite: true); - } - } - - Future _copyResources(FileWriter writer) async { - final prefix = 'package:dartdoc/resources/'; - for (String resourcePath in resources.resource_names) { - if (!resourcePath.startsWith(prefix)) { - throw StateError('Resource paths must start with $prefix, ' - 'encountered $resourcePath'); - } - String destFileName = resourcePath.substring(prefix.length); - writer.write(path.join('static-assets', destFileName), - await loader.loadAsBytes(resourcePath)); - } + render(writer, typeDef.filePath, templates.typeDefTemplate, data); } } diff --git a/lib/src/generator/html_generator.dart b/lib/src/generator/html_generator.dart index 52c2c803ad..5db839c9f7 100644 --- a/lib/src/generator/html_generator.dart +++ b/lib/src/generator/html_generator.dart @@ -5,14 +5,61 @@ library dartdoc.html_generator; import 'dart:async' show Future; +import 'dart:io' show File; import 'package:dartdoc/dartdoc.dart'; +import 'package:dartdoc/src/generator/dartdoc_generator_backend.dart'; import 'package:dartdoc/src/generator/generator.dart'; import 'package:dartdoc/src/generator/generator_frontend.dart'; -import 'package:dartdoc/src/generator/html_generator_backend.dart'; +import 'package:dartdoc/src/html/resource_loader.dart' as resource_loader; +import 'package:dartdoc/src/html/resources.g.dart' as resources; +import 'package:dartdoc/src/html/template_data.dart'; +import 'package:dartdoc/src/html/templates.dart'; +import 'package:path/path.dart' as path; Future initHtmlGenerator( DartdocGeneratorOptionContext context) async { - var backend = await HtmlGeneratorBackend.fromContext(context); + var templates = await Templates.fromContext(context); + var options = DartdocGeneratorBackendOptions.fromContext(context); + var backend = HtmlGeneratorBackend(options, templates); return GeneratorFrontEnd(backend); } + +/// Generator backend for html output. +class HtmlGeneratorBackend extends DartdocGeneratorBackend { + HtmlGeneratorBackend( + DartdocGeneratorBackendOptions options, Templates templates) + : super(options, templates); + + @override + void generatePackage(FileWriter writer, PackageGraph graph, Package package) { + super.generatePackage(writer, graph, package); + // We have to construct the data again. This only happens once per package. + TemplateData data = PackageTemplateData(options, graph, package); + render(writer, '__404error.html', templates.errorTemplate, data); + } + + @override + void generateAdditionalFiles(FileWriter writer, PackageGraph graph) async { + await _copyResources(writer); + if (options.favicon != null) { + // Allow overwrite of favicon. + var bytes = File(options.favicon).readAsBytesSync(); + writer.write(path.join('static-assets', 'favicon.png'), bytes, + allowOverwrite: true); + } + } + + Future _copyResources(FileWriter writer) async { + final prefix = 'package:dartdoc/resources/'; + for (String resourcePath in resources.resource_names) { + if (!resourcePath.startsWith(prefix)) { + throw StateError('Resource paths must start with $prefix, ' + 'encountered $resourcePath'); + } + String destFileName = resourcePath.substring(prefix.length); + writer.write(path.join('static-assets', destFileName), + await resource_loader.loadAsBytes(resourcePath)); + } + } +} diff --git a/lib/src/html/template_data.dart b/lib/src/html/template_data.dart index 4ba09304b7..852bdd1d58 100644 --- a/lib/src/html/template_data.dart +++ b/lib/src/html/template_data.dart @@ -4,7 +4,7 @@ import 'package:dartdoc/src/model/model.dart'; -abstract class HtmlOptions { +abstract class TemplateOptions { String get relCanonicalPrefix; String get toolVersion; bool get useBaseHref; @@ -12,7 +12,7 @@ abstract class HtmlOptions { abstract class TemplateData { final PackageGraph packageGraph; - final HtmlOptions htmlOptions; + final TemplateOptions htmlOptions; TemplateData(this.htmlOptions, this.packageGraph); @@ -54,7 +54,7 @@ abstract class TemplateData { class PackageTemplateData extends TemplateData { final Package package; PackageTemplateData( - HtmlOptions htmlOptions, PackageGraph packageGraph, this.package) + TemplateOptions htmlOptions, PackageGraph packageGraph, this.package) : super(htmlOptions, packageGraph); @override @@ -84,7 +84,7 @@ class CategoryTemplateData extends TemplateData { final Category category; CategoryTemplateData( - HtmlOptions htmlOptions, PackageGraph packageGraph, this.category) + TemplateOptions htmlOptions, PackageGraph packageGraph, this.category) : super(htmlOptions, packageGraph); @override @@ -111,7 +111,7 @@ class LibraryTemplateData extends TemplateData { final Library library; LibraryTemplateData( - HtmlOptions htmlOptions, PackageGraph packageGraph, this.library) + TemplateOptions htmlOptions, PackageGraph packageGraph, this.library) : super(htmlOptions, packageGraph); @override @@ -136,7 +136,7 @@ class LibraryTemplateData extends TemplateData { class MixinTemplateData extends ClassTemplateData { final Mixin mixin; - MixinTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, + MixinTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, Library library, this.mixin) : super(htmlOptions, packageGraph, library, mixin); @@ -150,7 +150,7 @@ class ClassTemplateData extends TemplateData { final Library library; Class _objectType; - ClassTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, + ClassTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, this.library, this.clazz) : super(htmlOptions, packageGraph); @@ -195,7 +195,7 @@ class ExtensionTemplateData extends TemplateData { final T extension; final Library library; - ExtensionTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, + ExtensionTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, this.library, this.extension) : super(htmlOptions, packageGraph); @@ -223,8 +223,8 @@ class ConstructorTemplateData extends TemplateData { final Class clazz; final Constructor constructor; - ConstructorTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, - this.library, this.clazz, this.constructor) + ConstructorTemplateData(TemplateOptions htmlOptions, + PackageGraph packageGraph, this.library, this.clazz, this.constructor) : super(htmlOptions, packageGraph); @override @@ -250,7 +250,7 @@ class ConstructorTemplateData extends TemplateData { } class EnumTemplateData extends ClassTemplateData { - EnumTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, + EnumTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, Library library, Enum eNum) : super(htmlOptions, packageGraph, library, eNum); @@ -263,7 +263,7 @@ class FunctionTemplateData extends TemplateData { final ModelFunction function; final Library library; - FunctionTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, + FunctionTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, this.library, this.function) : super(htmlOptions, packageGraph); @@ -291,7 +291,7 @@ class MethodTemplateData extends TemplateData { final Container container; String containerDesc; - MethodTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, + MethodTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, this.library, this.container, this.method) : super(htmlOptions, packageGraph) { containerDesc = container.isClass ? 'class' : 'extension'; @@ -324,7 +324,7 @@ class PropertyTemplateData extends TemplateData { final Field property; String containerDesc; - PropertyTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, + PropertyTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, this.library, this.container, this.property) : super(htmlOptions, packageGraph) { containerDesc = container.isClass ? 'class' : 'extension'; @@ -358,7 +358,7 @@ class TypedefTemplateData extends TemplateData { final Library library; final Typedef typeDef; - TypedefTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph, + TypedefTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, this.library, this.typeDef) : super(htmlOptions, packageGraph); @@ -385,7 +385,7 @@ class TopLevelPropertyTemplateData extends TemplateData { final Library library; final TopLevelVariable property; - TopLevelPropertyTemplateData(HtmlOptions htmlOptions, + TopLevelPropertyTemplateData(TemplateOptions htmlOptions, PackageGraph packageGraph, this.library, this.property) : super(htmlOptions, packageGraph); diff --git a/test/html_generator_test.dart b/test/html_generator_test.dart index 4fc32c9217..0a0dd49187 100644 --- a/test/html_generator_test.dart +++ b/test/html_generator_test.dart @@ -8,7 +8,7 @@ import 'dart:io' show File, Directory; import 'package:dartdoc/dartdoc.dart'; import 'package:dartdoc/src/generator/generator_frontend.dart'; -import 'package:dartdoc/src/generator/html_generator_backend.dart'; +import 'package:dartdoc/src/generator/html_generator.dart'; import 'package:dartdoc/src/html/resources.g.dart'; import 'package:dartdoc/src/html/templates.dart'; import 'package:dartdoc/src/model/package_graph.dart'; From 7a56e8fcf23436604dd87a3a5a20a411ac8f83fd Mon Sep 17 00:00:00 2001 From: Jonathan Koren Date: Thu, 13 Feb 2020 15:18:44 -0800 Subject: [PATCH 3/4] Move remaining files from html to generator --- lib/src/generator/dartdoc_generator_backend.dart | 14 ++++++++------ lib/src/generator/html_generator.dart | 8 ++++---- .../html_resources.g.dart} | 0 lib/src/{html => generator}/resource_loader.dart | 0 lib/src/{html => generator}/template_data.dart | 0 lib/src/{html => generator}/templates.dart | 2 +- test/html_generator_test.dart | 4 ++-- test/resource_loader_test.dart | 2 +- tool/builder.dart | 4 ++-- 9 files changed, 18 insertions(+), 16 deletions(-) rename lib/src/{html/resources.g.dart => generator/html_resources.g.dart} (100%) rename lib/src/{html => generator}/resource_loader.dart (100%) rename lib/src/{html => generator}/template_data.dart (100%) rename lib/src/{html => generator}/templates.dart (99%) diff --git a/lib/src/generator/dartdoc_generator_backend.dart b/lib/src/generator/dartdoc_generator_backend.dart index ad7b78a4ca..cfd9b69a78 100644 --- a/lib/src/generator/dartdoc_generator_backend.dart +++ b/lib/src/generator/dartdoc_generator_backend.dart @@ -5,8 +5,8 @@ import 'package:dartdoc/dartdoc.dart'; import 'package:dartdoc/src/generator/generator_frontend.dart'; import 'package:dartdoc/src/generator/generator_utils.dart' as generator_util; -import 'package:dartdoc/src/html/template_data.dart'; -import 'package:dartdoc/src/html/templates.dart'; +import 'package:dartdoc/src/generator/template_data.dart'; +import 'package:dartdoc/src/generator/templates.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/model/package.dart'; import 'package:dartdoc/src/model/package_graph.dart'; @@ -130,8 +130,8 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateConstructor(FileWriter writer, PackageGraph packageGraph, Library lib, Class clazz, Constructor constructor) { - TemplateData data = ConstructorTemplateData( - options, packageGraph, lib, clazz, constructor); + TemplateData data = + ConstructorTemplateData(options, packageGraph, lib, clazz, constructor); render(writer, constructor.filePath, templates.constructorTemplate, data); } @@ -182,8 +182,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { TemplateData data = TopLevelPropertyTemplateData(options, packageGraph, lib, property); - render( - writer, property.filePath, templates.topLevelPropertyTemplate, data); + render(writer, property.filePath, templates.topLevelPropertyTemplate, data); } @override @@ -199,4 +198,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { render(writer, typeDef.filePath, templates.typeDefTemplate, data); } + + @override + void generateAdditionalFiles(FileWriter writer, PackageGraph graph) {} } diff --git a/lib/src/generator/html_generator.dart b/lib/src/generator/html_generator.dart index 5db839c9f7..04e34f27f5 100644 --- a/lib/src/generator/html_generator.dart +++ b/lib/src/generator/html_generator.dart @@ -11,10 +11,10 @@ import 'package:dartdoc/dartdoc.dart'; import 'package:dartdoc/src/generator/dartdoc_generator_backend.dart'; import 'package:dartdoc/src/generator/generator.dart'; import 'package:dartdoc/src/generator/generator_frontend.dart'; -import 'package:dartdoc/src/html/resource_loader.dart' as resource_loader; -import 'package:dartdoc/src/html/resources.g.dart' as resources; -import 'package:dartdoc/src/html/template_data.dart'; -import 'package:dartdoc/src/html/templates.dart'; +import 'package:dartdoc/src/generator/html_resources.g.dart' as resources; +import 'package:dartdoc/src/generator/resource_loader.dart' as resource_loader; +import 'package:dartdoc/src/generator/template_data.dart'; +import 'package:dartdoc/src/generator/templates.dart'; import 'package:path/path.dart' as path; Future initHtmlGenerator( diff --git a/lib/src/html/resources.g.dart b/lib/src/generator/html_resources.g.dart similarity index 100% rename from lib/src/html/resources.g.dart rename to lib/src/generator/html_resources.g.dart diff --git a/lib/src/html/resource_loader.dart b/lib/src/generator/resource_loader.dart similarity index 100% rename from lib/src/html/resource_loader.dart rename to lib/src/generator/resource_loader.dart diff --git a/lib/src/html/template_data.dart b/lib/src/generator/template_data.dart similarity index 100% rename from lib/src/html/template_data.dart rename to lib/src/generator/template_data.dart diff --git a/lib/src/html/templates.dart b/lib/src/generator/templates.dart similarity index 99% rename from lib/src/html/templates.dart rename to lib/src/generator/templates.dart index 5b96a30670..875328d99a 100644 --- a/lib/src/html/templates.dart +++ b/lib/src/generator/templates.dart @@ -9,7 +9,7 @@ import 'dart:io' show File, Directory; import 'dart:isolate'; import 'package:dartdoc/dartdoc.dart'; -import 'package:dartdoc/src/html/resource_loader.dart' as loader; +import 'package:dartdoc/src/generator/resource_loader.dart' as loader; import 'package:mustache/mustache.dart'; import 'package:path/path.dart' as path; diff --git a/test/html_generator_test.dart b/test/html_generator_test.dart index 0a0dd49187..5a37e2337a 100644 --- a/test/html_generator_test.dart +++ b/test/html_generator_test.dart @@ -9,8 +9,8 @@ import 'dart:io' show File, Directory; import 'package:dartdoc/dartdoc.dart'; import 'package:dartdoc/src/generator/generator_frontend.dart'; import 'package:dartdoc/src/generator/html_generator.dart'; -import 'package:dartdoc/src/html/resources.g.dart'; -import 'package:dartdoc/src/html/templates.dart'; +import 'package:dartdoc/src/generator/html_resources.g.dart'; +import 'package:dartdoc/src/generator/templates.dart'; import 'package:dartdoc/src/model/package_graph.dart'; import 'package:dartdoc/src/warnings.dart'; import 'package:path/path.dart' as path; diff --git a/test/resource_loader_test.dart b/test/resource_loader_test.dart index 2e188d1feb..1670aab665 100644 --- a/test/resource_loader_test.dart +++ b/test/resource_loader_test.dart @@ -4,7 +4,7 @@ library dartdoc.resource_loader_test; -import 'package:dartdoc/src/html/resource_loader.dart' as loader; +import 'package:dartdoc/src/generator/resource_loader.dart' as loader; import 'package:test/test.dart'; void main() { diff --git a/tool/builder.dart b/tool/builder.dart index fa92cefa31..af5e1de4cb 100644 --- a/tool/builder.dart +++ b/tool/builder.dart @@ -30,13 +30,13 @@ class ResourceBuilder implements Builder { packagePaths.sort(); await buildStep.writeAsString( AssetId(buildStep.inputId.package, - path.url.join('lib', 'src', 'html', 'resources.g.dart')), + path.url.join('lib', 'src', 'generator', 'html_resources.g.dart')), _resourcesFile(packagePaths)); } @override final Map> buildExtensions = const { - r'$lib$': ['src/html/resources.g.dart'] + r'$lib$': ['src/generator/html_resources.g.dart'] }; } From 781b271cf21ec1203e51e52c77a760d1664b6c8c Mon Sep 17 00:00:00 2001 From: Jonathan Koren Date: Wed, 26 Feb 2020 08:56:40 -0800 Subject: [PATCH 4/4] Fix references to html_resources.g.dart --- build.yaml | 2 +- tool/grind.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.yaml b/build.yaml index 3b7fabccb7..16a38bf7cf 100644 --- a/build.yaml +++ b/build.yaml @@ -2,7 +2,7 @@ builders: resource_builder: import: "tool/builder.dart" builder_factories: ["resourceBuilder"] - build_extensions: {'$lib$': ['src/html/resources.g.dart']} + build_extensions: {'$lib$': ['src/generator/html_resources.g.dart']} build_to: "source" auto_apply: none diff --git a/tool/grind.dart b/tool/grind.dart index 2e435059fd..1585a88985 100644 --- a/tool/grind.dart +++ b/tool/grind.dart @@ -851,7 +851,7 @@ Future build() async { /// Paths in this list are relative to lib/. final _generated_files_list = [ '../dartdoc_options.yaml', - 'src/html/resources.g.dart', + 'src/generator/html_resources.g.dart', 'src/version.dart', ].map((s) => path.joinAll(path.posix.split(s)));