diff --git a/lib/options.dart b/lib/options.dart index 195510823e..aa46c9de95 100644 --- a/lib/options.dart +++ b/lib/options.dart @@ -36,13 +36,13 @@ class DartdocGeneratorOptionContext extends DartdocOptionContext { bool get prettyIndexJson => optionSet['prettyIndexJson'].valueAt(context); - String get favicon => optionSet['favicon'].valueAt(context); + String? get favicon => optionSet['favicon'].valueAt(context); String get relCanonicalPrefix => optionSet['relCanonicalPrefix'].valueAt(context); /// The 'templatesDir' Dartdoc option if one was specified; otherwise `null`. - String get templatesDir => optionSet['templatesDir'].valueAt(context); + String? get templatesDir => optionSet['templatesDir'].valueAt(context); // TODO(jdkoren): duplicated temporarily so that GeneratorContext is enough for configuration. @override diff --git a/lib/src/generator/dartdoc_generator_backend.dart b/lib/src/generator/dartdoc_generator_backend.dart index 85f085bd3c..8e8d3cdb20 100644 --- a/lib/src/generator/dartdoc_generator_backend.dart +++ b/lib/src/generator/dartdoc_generator_backend.dart @@ -2,8 +2,6 @@ // 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. -// @dart=2.9 - import 'package:analyzer/file_system/file_system.dart'; import 'package:dartdoc/options.dart'; import 'package:dartdoc/src/generator/generator.dart'; @@ -19,12 +17,12 @@ import 'package:path/path.dart' as path show Context; /// Configuration options for the Dartdoc's default backend. class DartdocGeneratorBackendOptions implements TemplateOptions { @override - final String relCanonicalPrefix; + final String? relCanonicalPrefix; @override final String toolVersion; - final String favicon; + final String? favicon; final bool prettyIndexJson; @@ -50,16 +48,6 @@ class DartdocGeneratorBackendOptions implements TemplateOptions { customHeaderContent = context.header, customFooterContent = context.footer, customInnerFooterText = context.footerText; - - DartdocGeneratorBackendOptions._defaults() - : relCanonicalPrefix = null, - toolVersion = null, - favicon = null, - prettyIndexJson = false, - useBaseHref = false, - customHeaderContent = '', - customFooterContent = '', - customInnerFooterText = ''; } class SidebarGenerator { @@ -86,10 +74,8 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { final ResourceProvider resourceProvider; final path.Context _pathContext; - DartdocGeneratorBackend(DartdocGeneratorBackendOptions options, - this.templates, this.resourceProvider) - : options = options ?? DartdocGeneratorBackendOptions._defaults(), - sidebarForLibrary = SidebarGenerator(templates.renderSidebarForLibrary), + DartdocGeneratorBackend(this.options, this.templates, this.resourceProvider) + : sidebarForLibrary = SidebarGenerator(templates.renderSidebarForLibrary), sidebarForContainer = SidebarGenerator(templates.renderSidebarForContainer), _pathContext = resourceProvider.pathContext; @@ -100,8 +86,9 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { if (!options.useBaseHref) { content = content.replaceAll(htmlBasePlaceholder, data.htmlBase); } + var element = data.self; writer.write(filename, content, - element: data.self is Warnable ? data.self : null); + element: element is Warnable ? element : null); } @override @@ -131,7 +118,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generatePackage(FileWriter writer, PackageGraph graph, Package package) { - TemplateData data = PackageTemplateData(options, graph, package); + var data = PackageTemplateData(options, graph, package); var content = templates.renderIndex(data); write(writer, package.filePath, data, content); } @@ -139,7 +126,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateCategory( FileWriter writer, PackageGraph packageGraph, Category category) { - TemplateData data = CategoryTemplateData(options, packageGraph, category); + var data = CategoryTemplateData(options, packageGraph, category); var content = templates.renderCategory(data); write(writer, category.filePath, data, content); } @@ -147,7 +134,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateLibrary( FileWriter writer, PackageGraph packageGraph, Library lib) { - TemplateData data = LibraryTemplateData( + var data = LibraryTemplateData( options, packageGraph, lib, sidebarForLibrary.getRenderFor); var content = templates.renderLibrary(data); write(writer, lib.filePath, data, content); @@ -156,7 +143,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateClass( FileWriter writer, PackageGraph packageGraph, Library lib, Class clazz) { - TemplateData data = ClassTemplateData(options, packageGraph, lib, clazz, + var data = ClassTemplateData(options, packageGraph, lib, clazz, sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor); var content = templates.renderClass(data); write(writer, clazz.filePath, data, content); @@ -165,13 +152,8 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateExtension(FileWriter writer, PackageGraph packageGraph, Library lib, Extension extension) { - TemplateData data = ExtensionTemplateData( - options, - packageGraph, - lib, - extension, - sidebarForLibrary.getRenderFor, - sidebarForContainer.getRenderFor); + var data = ExtensionTemplateData(options, packageGraph, lib, extension, + sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor); var content = templates.renderExtension(data); write(writer, extension.filePath, data, content); } @@ -179,7 +161,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateMixin( FileWriter writer, PackageGraph packageGraph, Library lib, Mixin mixin) { - TemplateData data = MixinTemplateData(options, packageGraph, lib, mixin, + var data = MixinTemplateData(options, packageGraph, lib, mixin, sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor); var content = templates.renderMixin(data); write(writer, mixin.filePath, data, content); @@ -188,8 +170,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, sidebarForContainer.getRenderFor); + var data = ConstructorTemplateData(options, packageGraph, lib, clazz, + constructor, sidebarForContainer.getRenderFor); var content = templates.renderConstructor(data); write(writer, constructor.filePath, data, content); } @@ -197,7 +179,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateEnum( FileWriter writer, PackageGraph packageGraph, Library lib, Enum eNum) { - TemplateData data = EnumTemplateData(options, packageGraph, lib, eNum, + var data = EnumTemplateData(options, packageGraph, lib, eNum, sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor); var content = templates.renderEnum(data); write(writer, eNum.filePath, data, content); @@ -206,7 +188,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateFunction(FileWriter writer, PackageGraph packageGraph, Library lib, ModelFunction function) { - TemplateData data = FunctionTemplateData( + var data = FunctionTemplateData( options, packageGraph, lib, function, sidebarForLibrary.getRenderFor); var content = templates.renderFunction(data); write(writer, function.filePath, data, content); @@ -215,8 +197,8 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateMethod(FileWriter writer, PackageGraph packageGraph, Library lib, Container clazz, Method method) { - TemplateData data = MethodTemplateData(options, packageGraph, lib, clazz, - method, sidebarForContainer.getRenderFor); + var data = MethodTemplateData(options, packageGraph, lib, clazz, method, + sidebarForContainer.getRenderFor); var content = templates.renderMethod(data); write(writer, method.filePath, data, content); } @@ -229,8 +211,8 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateProperty(FileWriter writer, PackageGraph packageGraph, Library lib, Container clazz, Field property) { - TemplateData data = PropertyTemplateData(options, packageGraph, lib, clazz, - property, sidebarForContainer.getRenderFor); + var data = PropertyTemplateData(options, packageGraph, lib, clazz, property, + sidebarForContainer.getRenderFor); var content = templates.renderProperty(data); write(writer, property.filePath, data, content); } @@ -238,7 +220,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateTopLevelProperty(FileWriter writer, PackageGraph packageGraph, Library lib, TopLevelVariable property) { - TemplateData data = TopLevelPropertyTemplateData( + var data = TopLevelPropertyTemplateData( options, packageGraph, lib, property, sidebarForLibrary.getRenderFor); var content = templates.renderTopLevelProperty(data); write(writer, property.filePath, data, content); @@ -252,7 +234,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend { @override void generateTypeDef(FileWriter writer, PackageGraph packageGraph, Library lib, Typedef typeDef) { - TemplateData data = TypedefTemplateData( + var data = TypedefTemplateData( options, packageGraph, lib, typeDef, sidebarForLibrary.getRenderFor); var content = templates.renderTypedef(data); write(writer, typeDef.filePath, data, content); diff --git a/lib/src/generator/empty_generator.dart b/lib/src/generator/empty_generator.dart index f2aa1b5e06..c421e5615b 100644 --- a/lib/src/generator/empty_generator.dart +++ b/lib/src/generator/empty_generator.dart @@ -1,5 +1,3 @@ -// @dart=2.9 - library dartdoc.empty_generator; import 'package:dartdoc/src/dartdoc_options.dart'; @@ -26,7 +24,7 @@ class EmptyGenerator extends Generator { .forEach((m) => logProgress(m.documentationAsHtml)); } } - return null; + return Future.value(null); } } diff --git a/lib/src/generator/generator.dart b/lib/src/generator/generator.dart index 221574877e..d3d5fabe54 100644 --- a/lib/src/generator/generator.dart +++ b/lib/src/generator/generator.dart @@ -20,7 +20,7 @@ abstract class FileWriter { /// Writes [content] to a file at [filePath]. /// /// If a file is to be overwritten, a warning will be reported on [element]. - void write(String filePath, String content, {Warnable element}); + void write(String filePath, String content, {Warnable? element}); /// Writes [content] to a file at [filePath]. /// diff --git a/lib/src/generator/generator_frontend.dart b/lib/src/generator/generator_frontend.dart index 4754c549c3..f956da7e13 100644 --- a/lib/src/generator/generator_frontend.dart +++ b/lib/src/generator/generator_frontend.dart @@ -2,8 +2,6 @@ // 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. -// @dart=2.9 - import 'package:dartdoc/src/generator/generator.dart'; import 'package:dartdoc/src/logging.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -18,9 +16,11 @@ class GeneratorFrontEnd implements Generator { GeneratorFrontEnd(this._generatorBackend); @override - Future generate(PackageGraph packageGraph, FileWriter writer) async { + Future generate(PackageGraph? packageGraph, FileWriter writer) async { var indexElements = []; - _generateDocs(packageGraph, writer, indexElements); + if (packageGraph != null) { + _generateDocs(packageGraph, writer, indexElements); + } await _generatorBackend.generateAdditionalFiles(writer); var categories = indexElements @@ -35,8 +35,6 @@ class GeneratorFrontEnd implements Generator { /// elements. void _generateDocs(PackageGraph packageGraph, FileWriter writer, List indexAccumulator) { - if (packageGraph == null) return; - _generatorBackend.generatePackage( writer, packageGraph, packageGraph.defaultPackage); diff --git a/lib/src/generator/generator_utils.dart b/lib/src/generator/generator_utils.dart index 83b7860b7b..23a5173440 100644 --- a/lib/src/generator/generator_utils.dart +++ b/lib/src/generator/generator_utils.dart @@ -2,8 +2,6 @@ // 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. -// @dart=2.9 - import 'dart:convert'; import 'package:collection/collection.dart'; @@ -79,10 +77,12 @@ String generateSearchIndexJson( return encoder.convert(indexItems); } -int _sortElementRepresentations(Map a, Map b) { - final value = compareNatural(a['qualifiedName'], b['qualifiedName']); +int _sortElementRepresentations( + Map a, Map b) { + final value = compareNatural( + a['qualifiedName'] as String, b['qualifiedName'] as String); if (value == 0) { - return compareNatural(a['type'], b['type']); + return compareNatural(a['type'] as String, b['type'] as String); } return value; } diff --git a/lib/src/generator/html_generator.dart b/lib/src/generator/html_generator.dart index a4e5b7b689..42c15cea44 100644 --- a/lib/src/generator/html_generator.dart +++ b/lib/src/generator/html_generator.dart @@ -2,8 +2,6 @@ // 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. -// @dart=2.9 - library dartdoc.html_generator; import 'package:analyzer/file_system/file_system.dart'; @@ -41,7 +39,7 @@ class HtmlGeneratorBackend extends DartdocGeneratorBackend { 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); + var data = PackageTemplateData(options, graph, package); var content = templates.renderError(data); write(writer, '__404error.html', data, content); } @@ -49,9 +47,10 @@ class HtmlGeneratorBackend extends DartdocGeneratorBackend { @override Future generateAdditionalFiles(FileWriter writer) async { await _copyResources(writer); - if (options.favicon != null) { + var favicon = options.favicon; + if (favicon != null) { // Allow overwrite of favicon. - var bytes = resourceProvider.getFile(options.favicon).readAsBytesSync(); + var bytes = resourceProvider.getFile(favicon).readAsBytesSync(); writer.writeBytes( resourceProvider.pathContext.join('static-assets', 'favicon.png'), bytes, diff --git a/lib/src/generator/markdown_generator.dart b/lib/src/generator/markdown_generator.dart index d60d4c9735..f9a0aa5dc9 100644 --- a/lib/src/generator/markdown_generator.dart +++ b/lib/src/generator/markdown_generator.dart @@ -2,8 +2,6 @@ // 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. -// @dart=2.9 - import 'package:analyzer/file_system/file_system.dart'; import 'package:dartdoc/options.dart'; import 'package:dartdoc/src/generator/dartdoc_generator_backend.dart'; @@ -36,7 +34,7 @@ class MarkdownGeneratorBackend extends DartdocGeneratorBackend { 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); + PackageTemplateData data = PackageTemplateData(options, graph, package); var content = templates.renderError(data); write(writer, '__404error.md', data, content); } diff --git a/lib/src/generator/template_data.dart b/lib/src/generator/template_data.dart index 7f900571eb..95b58832d5 100644 --- a/lib/src/generator/template_data.dart +++ b/lib/src/generator/template_data.dart @@ -10,7 +10,7 @@ typedef ContainerSidebar = String Function( typedef LibrarySidebar = String Function(Library, TemplateDataWithLibrary); abstract class TemplateOptions { - String get relCanonicalPrefix; + String? get relCanonicalPrefix; String get toolVersion; bool get useBaseHref; String get customHeaderContent; @@ -46,7 +46,7 @@ abstract class TemplateData { String get htmlBase; T get self; String get version => htmlOptions.toolVersion; - String get relCanonicalPrefix => htmlOptions.relCanonicalPrefix; + String? get relCanonicalPrefix => htmlOptions.relCanonicalPrefix; bool get useBaseHref => htmlOptions.useBaseHref; String get bareHref { diff --git a/lib/src/generator/templates.dart b/lib/src/generator/templates.dart index f59960f82e..148399d129 100644 --- a/lib/src/generator/templates.dart +++ b/lib/src/generator/templates.dart @@ -2,8 +2,6 @@ // 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. -// @dart=2.9 - @Renderer(#renderCategory, Context(), 'category', visibleTypes: _visibleTypes) @Renderer(#renderClass, Context(), 'class') @@ -46,7 +44,6 @@ import 'package:dartdoc/src/model/language_feature.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/mustachio/annotations.dart'; import 'package:dartdoc/src/mustachio/renderer_base.dart'; -import 'package:meta/meta.dart'; const _visibleTypes = { Annotation, @@ -348,7 +345,7 @@ class RuntimeTemplates implements Templates { /// Creates a [Templates] from a custom set of template files, found in [dir]. static Future _create(Folder dir, String format, - {@required ResourceProvider resourceProvider}) async { + {required ResourceProvider resourceProvider}) async { Future