diff --git a/build.yaml b/build.yaml index cfff0d5947..2771d4c76e 100644 --- a/build.yaml +++ b/build.yaml @@ -8,7 +8,11 @@ builders: mustachio_builder: import: "tool/mustachio/builder.dart" builder_factories: ["mustachioBuilder"] - build_extensions: {".dart": [".renderers.dart"]} + build_extensions: + ".dart": + - ".aot_renderers_for_html.dart" + - ".aot_renderers_for_md.dart" + - ".runtime_renderers.dart" build_to: "source" targets: diff --git a/lib/src/generator/dartdoc_generator_backend.dart b/lib/src/generator/dartdoc_generator_backend.dart index 315cab16f6..5f7d8581fa 100644 --- a/lib/src/generator/dartdoc_generator_backend.dart +++ b/lib/src/generator/dartdoc_generator_backend.dart @@ -8,7 +8,7 @@ import 'package:dartdoc/src/generator/generator_frontend.dart'; import 'package:dartdoc/src/generator/generator_utils.dart' as generator_util; import 'package:dartdoc/src/generator/template_data.dart'; import 'package:dartdoc/src/generator/templates.dart'; -import 'package:dartdoc/src/generator/templates.renderers.dart'; +import 'package:dartdoc/src/generator/templates.runtime_renderers.dart'; import 'package:dartdoc/src/mustachio/renderer_base.dart'; import 'package:dartdoc/src/warnings.dart'; import 'package:path/path.dart' as path show Context; diff --git a/lib/src/generator/html_generator.dart b/lib/src/generator/html_generator.dart index a405d8d252..4afd0205e2 100644 --- a/lib/src/generator/html_generator.dart +++ b/lib/src/generator/html_generator.dart @@ -12,7 +12,7 @@ import 'package:dartdoc/src/generator/html_resources.g.dart' as resources; import 'package:dartdoc/src/generator/resource_loader.dart'; import 'package:dartdoc/src/generator/template_data.dart'; import 'package:dartdoc/src/generator/templates.dart'; -import 'package:dartdoc/src/generator/templates.renderers.dart'; +import 'package:dartdoc/src/generator/templates.runtime_renderers.dart'; import 'package:dartdoc/src/model/package.dart'; import 'package:dartdoc/src/model/package_graph.dart'; import 'package:path/path.dart' as path show Context; diff --git a/lib/src/generator/markdown_generator.dart b/lib/src/generator/markdown_generator.dart index 522e0dfaf9..5b8c96e795 100644 --- a/lib/src/generator/markdown_generator.dart +++ b/lib/src/generator/markdown_generator.dart @@ -8,7 +8,7 @@ import 'package:dartdoc/src/generator/generator.dart'; import 'package:dartdoc/src/generator/generator_frontend.dart'; import 'package:dartdoc/src/generator/template_data.dart'; import 'package:dartdoc/src/generator/templates.dart'; -import 'package:dartdoc/src/generator/templates.renderers.dart'; +import 'package:dartdoc/src/generator/templates.runtime_renderers.dart'; import 'package:dartdoc/src/model/package.dart'; import 'package:dartdoc/src/model/package_graph.dart'; import 'package:path/path.dart' as path show Context; diff --git a/lib/src/generator/templates.aot_renderers_for_html.dart b/lib/src/generator/templates.aot_renderers_for_html.dart new file mode 100644 index 0000000000..e0a6812855 --- /dev/null +++ b/lib/src/generator/templates.aot_renderers_for_html.dart @@ -0,0 +1,9942 @@ +// GENERATED CODE. DO NOT EDIT. +// +// To change the contents of this library, make changes to the builder source +// files in the tool/mustachio/ directory. + +// Sometimes we enter a new section which triggers creating a new variable, but +// the variable is not used; generally when the section is checking if a +// non-bool, non-Iterable field is non-null. +// ignore_for_file: unused_local_variable + +// It is hard to track exact imports without using package:code_builder. +// ignore_for_file: unused_import + +import 'dart:convert' show htmlEscape; + +import 'package:dartdoc/dartdoc.dart'; +import 'package:dartdoc/src/generator/template_data.dart'; +import 'templates.dart'; + +String renderCategory(CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderCategory_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +

'''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('''

+ '''); + buffer.write(_renderCategory_partial_documentation_1(context1, context0)); + buffer.writeln(); + if (context1.hasPublicLibraries == true) { + buffer.write(''' +
+

Libraries

+ +
'''); + var context2 = context1.publicLibrariesSorted; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write( + _renderCategory_partial_library_2(context3, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context1.hasPublicClasses == true) { + buffer.write(''' +
+

Classes

+ +
'''); + var context4 = context1.publicClassesSorted; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write( + _renderCategory_partial_class_3(context5, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context1.hasPublicMixins == true) { + buffer.write(''' +
+

Mixins

+ +
'''); + var context6 = context1.publicMixinsSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.write('\n '); + buffer.write( + _renderCategory_partial_mixin_4(context7, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context1.hasPublicConstants == true) { + buffer.write(''' +
+

Constants

+ +
'''); + var context8 = context1.publicConstantsSorted; + if (context8 != null) { + for (var context9 in context8) { + buffer.write('\n '); + buffer.write( + _renderCategory_partial_constant_5(context9, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context1.hasPublicProperties == true) { + buffer.write(''' +
+

Properties

+ +
'''); + var context10 = context1.publicPropertiesSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.write('\n '); + buffer.write(_renderCategory_partial_property_6( + context11, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context1.hasPublicFunctions == true) { + buffer.write(''' +
+

Functions

+ +
'''); + var context12 = context1.publicFunctionsSorted; + if (context12 != null) { + for (var context13 in context12) { + buffer.write('\n '); + buffer.write(_renderCategory_partial_callable_7( + context13, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context1.hasPublicEnums == true) { + buffer.write(''' +
+

Enums

+ +
'''); + var context14 = context1.publicEnumsSorted; + if (context14 != null) { + for (var context15 in context14) { + buffer.write('\n '); + buffer.write( + _renderCategory_partial_class_3(context15, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context1.hasPublicTypedefs == true) { + buffer.write(''' +
+

Typedefs

+ +
'''); + var context16 = context1.publicTypedefsSorted; + if (context16 != null) { + for (var context17 in context16) { + buffer.write('\n '); + buffer.write( + _renderCategory_partial_typedef_8(context17, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context1.hasPublicExceptions == true) { + buffer.write(''' +
+

Exceptions / Errors

+ +
'''); + var context18 = context1.publicExceptionsSorted; + if (context18 != null) { + for (var context19 in context18) { + buffer.write('\n '); + buffer.write( + _renderCategory_partial_class_3(context19, context1, context0)); + } + } + buffer.write(''' +
+
'''); + } + } + buffer.write(''' + +
+ + + + + +'''); + buffer.write(_renderCategory_partial_footer_12(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_head_0(CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderCategory_partial_documentation_1( + Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_library_2( + Library context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderCategory_partial_library_2_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+
'''); + if (context2.isDocumented == true) { + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String __renderCategory_partial_library_2_partial_categorization_0( + Library context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_class_3( + Class context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write(''' '''); + buffer.write(__renderCategory_partial_class_3_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String __renderCategory_partial_class_3_partial_categorization_0( + Class context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_mixin_4( + Mixin context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write(''' '''); + buffer.write(__renderCategory_partial_mixin_4_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String __renderCategory_partial_mixin_4_partial_categorization_0( + Mixin context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_constant_5(TopLevelVariable context2, + Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + → const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(__renderCategory_partial_constant_5_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderCategory_partial_constant_5_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ '''); + buffer.write(context2.constantValueTruncated.toString()); + buffer.write(''' +
+
+'''); + return buffer.toString(); +} + +String __renderCategory_partial_constant_5_partial_categorization_0( + TopLevelVariable context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_constant_5_partial_features_1( + TopLevelVariable context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_property_6(TopLevelVariable context2, + Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderCategory_partial_property_6_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderCategory_partial_property_6_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderCategory_partial_property_6_partial_categorization_0( + TopLevelVariable context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_property_6_partial_features_1( + TopLevelVariable context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_callable_7(ModelFunctionTyped context2, + Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''''''); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') + → '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write(__renderCategory_partial_callable_7_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderCategory_partial_callable_7_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderCategory_partial_callable_7_partial_categorization_0( + ModelFunctionTyped context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_callable_7_partial_features_1( + ModelFunctionTyped context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_typedef_8( + Typedef context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isCallable == true) { + var context3 = context2.asCallable; + if (context3 != null) { + buffer.write(''' +
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(''''''); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.write(''' + = '''); + buffer.write(context3.modelType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write(__renderCategory_partial_typedef_8_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderCategory_partial_typedef_8_partial_features_1( + context3, context2, context1, context0)); + buffer.write(''' + '''); + } + } + if (context2.isCallable != true) { + buffer.write('\n '); + buffer.write(__renderCategory_partial_typedef_8_partial_type_2( + context2, context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_typedef_8_partial_categorization_0( + FunctionTypedef context3, + Typedef context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_typedef_8_partial_features_1( + FunctionTypedef context3, + Typedef context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_typedef_8_partial_type_2( + Typedef context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''''''); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write(''' + = '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write( + ___renderCategory_partial_typedef_8_partial_type_2_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write( + ___renderCategory_partial_typedef_8_partial_type_2_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String + ___renderCategory_partial_typedef_8_partial_type_2_partial_categorization_0( + Typedef context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String ___renderCategory_partial_typedef_8_partial_type_2_partial_features_1( + Typedef context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_search_sidebar_9(CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderCategory_partial_packages_10(CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
    '''); + var context1 = context0.localPackages; + if (context1 != null) { + for (var context2 in context1) { + if (context2.isFirstPackage == true) { + if (context2.hasDocumentedCategories == true) { + buffer.write(''' +
  1. Topics
  2. '''); + var context3 = context2.documentedCategoriesSorted; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  3. '''); + buffer.write(context4.linkedName.toString()); + buffer.write('''
  4. '''); + } + } + } + buffer.write(''' +
  5. Libraries
  6. '''); + } + if (context2.isFirstPackage != true) { + buffer.write(''' +
  7. '''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write('''
  8. '''); + } + var context5 = context2.defaultCategory; + if (context5 != null) { + var context6 = context5.publicLibrariesSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.write(''' +
  9. '''); + buffer.write(context7.linkedName.toString()); + buffer.write('''
  10. '''); + } + } + } + var context8 = context2.categoriesWithPublicLibraries; + if (context8 != null) { + for (var context9 in context8) { + buffer.write(''' +
  11. '''); + buffer.write(htmlEscape.convert(context9.name.toString())); + buffer.write('''
  12. '''); + var context10 = context9.publicLibrariesSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.write(''' +
  13. '''); + buffer.write(context11.linkedName.toString()); + buffer.write('''
  14. '''); + } + } + } + } + } + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String _renderCategory_partial_sidebar_for_category_11( + CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
    '''); + var context1 = context0.self; + if (context1 != null) { + if (context1.hasPublicLibraries == true) { + buffer.write(''' +
  1. Libraries
  2. '''); + var context2 = context0.self; + if (context2 != null) { + var context3 = context2.publicLibrariesSorted; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  3. '''); + buffer.write(context4.linkedName.toString()); + buffer.write('''
  4. '''); + } + } + } + } + } + buffer.writeln(); + var context5 = context0.self; + if (context5 != null) { + if (context5.hasPublicMixins == true) { + buffer.write(''' +
  5. Mixins
  6. '''); + var context6 = context0.self; + if (context6 != null) { + var context7 = context6.publicMixinsSorted; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +
  7. '''); + buffer.write(context8.linkedName.toString()); + buffer.write('''
  8. '''); + } + } + } + } + } + buffer.writeln(); + var context9 = context0.self; + if (context9 != null) { + if (context9.hasPublicClasses == true) { + buffer.write(''' +
  9. Classes
  10. '''); + var context10 = context0.self; + if (context10 != null) { + var context11 = context10.publicClassesSorted; + if (context11 != null) { + for (var context12 in context11) { + buffer.write(''' +
  11. '''); + buffer.write(context12.linkedName.toString()); + buffer.write('''
  12. '''); + } + } + } + } + } + buffer.writeln(); + var context13 = context0.self; + if (context13 != null) { + if (context13.hasPublicConstants == true) { + buffer.write(''' +
  13. Constants
  14. '''); + var context14 = context0.self; + if (context14 != null) { + var context15 = context14.publicConstantsSorted; + if (context15 != null) { + for (var context16 in context15) { + buffer.write(''' +
  15. '''); + buffer.write(context16.linkedName.toString()); + buffer.write('''
  16. '''); + } + } + } + } + } + buffer.writeln(); + var context17 = context0.self; + if (context17 != null) { + if (context17.hasPublicProperties == true) { + buffer.write(''' +
  17. Properties
  18. '''); + var context18 = context0.self; + if (context18 != null) { + var context19 = context18.publicPropertiesSorted; + if (context19 != null) { + for (var context20 in context19) { + buffer.write(''' +
  19. '''); + buffer.write(context20.linkedName.toString()); + buffer.write('''
  20. '''); + } + } + } + } + } + buffer.writeln(); + var context21 = context0.self; + if (context21 != null) { + if (context21.hasPublicFunctions == true) { + buffer.write(''' +
  21. Functions
  22. '''); + var context22 = context0.self; + if (context22 != null) { + var context23 = context22.publicFunctionsSorted; + if (context23 != null) { + for (var context24 in context23) { + buffer.write(''' +
  23. '''); + buffer.write(context24.linkedName.toString()); + buffer.write('''
  24. '''); + } + } + } + } + } + buffer.writeln(); + var context25 = context0.self; + if (context25 != null) { + if (context25.hasPublicEnums == true) { + buffer.write(''' +
  25. Enums
  26. '''); + var context26 = context0.self; + if (context26 != null) { + var context27 = context26.publicEnumsSorted; + if (context27 != null) { + for (var context28 in context27) { + buffer.write(''' +
  27. '''); + buffer.write(context28.linkedName.toString()); + buffer.write('''
  28. '''); + } + } + } + } + } + buffer.writeln(); + var context29 = context0.self; + if (context29 != null) { + if (context29.hasPublicTypedefs == true) { + buffer.write(''' +
  29. Typedefs
  30. '''); + var context30 = context0.self; + if (context30 != null) { + var context31 = context30.publicTypedefsSorted; + if (context31 != null) { + for (var context32 in context31) { + buffer.write(''' +
  31. '''); + buffer.write(context32.linkedName.toString()); + buffer.write('''
  32. '''); + } + } + } + } + } + buffer.writeln(); + var context33 = context0.self; + if (context33 != null) { + if (context33.hasPublicExceptions == true) { + buffer.write(''' +
  33. Exceptions
  34. '''); + var context34 = context0.self; + if (context34 != null) { + var context35 = context34.publicExceptionsSorted; + if (context35 != null) { + for (var context36 in context35) { + buffer.write(''' +
  35. '''); + buffer.write(context36.linkedName.toString()); + buffer.write('''
  36. '''); + } + } + } + } + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String _renderCategory_partial_footer_12(CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ + + +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderClass(ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderClass_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderClass_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderClass_partial_feature_set_2(context1, context0)); + buffer.write(' '); + buffer.write(_renderClass_partial_categorization_3(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.clazz; + if (context2 != null) { + buffer.write('\n '); + buffer.write(_renderClass_partial_documentation_4(context2, context0)); + buffer.writeln(); + if (context2.hasModifiers == true) { + buffer.write(''' +
+
'''); + if (context2.hasPublicSuperChainReversed == true) { + buffer.write(''' +
Inheritance
+
    +
  • '''); + buffer.write(context0.linkedObjectType.toString()); + buffer.write('''
  • '''); + var context3 = context2.publicSuperChainReversed; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  • '''); + buffer.write(context4.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
  • '''); + buffer.write(context2.name.toString()); + buffer.write('''
  • +
'''); + } + buffer.writeln(); + if (context2.hasPublicInterfaces == true) { + buffer.write(''' +
Implemented types
+
+
    '''); + var context5 = context2.publicInterfaces; + if (context5 != null) { + for (var context6 in context5) { + buffer.write(''' +
  • '''); + buffer.write(context6.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicMixedInTypes == true) { + buffer.write(''' +
Mixed in types
+
    '''); + var context7 = context2.publicMixedInTypes; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +
  • '''); + buffer.write(context8.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.writeln(); + if (context2.hasPublicImplementors == true) { + buffer.write(''' +
Implementers
+
    '''); + var context9 = context2.publicImplementorsSorted; + if (context9 != null) { + for (var context10 in context9) { + buffer.write(''' +
  • '''); + buffer.write(context10.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.writeln(); + if (context2.hasPotentiallyApplicableExtensions == true) { + buffer.write(''' +
Available Extensions
+
    '''); + var context11 = context2.potentiallyApplicableExtensionsSorted; + if (context11 != null) { + for (var context12 in context11) { + buffer.write(''' +
  • '''); + buffer.write(context12.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.writeln(); + if (context2.hasAnnotations == true) { + buffer.write(''' +
Annotations
+
    '''); + var context13 = context2.annotations; + if (context13 != null) { + for (var context14 in context13) { + buffer.write(''' +
  • '''); + buffer.write(context14.linkedNameWithParameters.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicConstructors == true) { + buffer.write(''' +
+

Constructors

+ +
'''); + var context15 = context2.publicConstructorsSorted; + if (context15 != null) { + for (var context16 in context15) { + buffer.write(''' +
+ '''); + buffer.write(context16.linkedName.toString()); + buffer.write('''('''); + buffer.write(context16.linkedParams.toString()); + buffer.write(''') +
+
+ '''); + buffer.write(context16.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context16.extendedDocLink.toString()); + if (context16.isConst == true) { + buffer.write(''' +
const
'''); + } + if (context16.isFactory == true) { + buffer.write(''' +
factory
'''); + } + buffer.write(''' +
'''); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceFields == true) { + buffer.write(''' +
+

Properties

+ +
'''); + var context17 = context2.publicInstanceFieldsSorted; + if (context17 != null) { + for (var context18 in context17) { + buffer.write('\n '); + buffer.write( + _renderClass_partial_property_5(context18, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceMethods == true) { + buffer.write(''' +
+

Methods

+
'''); + var context19 = context2.publicInstanceMethodsSorted; + if (context19 != null) { + for (var context20 in context19) { + buffer.write('\n '); + buffer.write( + _renderClass_partial_callable_6(context20, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceOperators == true) { + buffer.write(''' +
+

Operators

+
'''); + var context21 = context2.publicInstanceOperatorsSorted; + if (context21 != null) { + for (var context22 in context21) { + buffer.write('\n '); + buffer.write( + _renderClass_partial_callable_6(context22, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicVariableStaticFields == true) { + buffer.write(''' +
+

Static Properties

+ +
'''); + var context23 = context2.publicVariableStaticFieldsSorted; + if (context23 != null) { + for (var context24 in context23) { + buffer.write('\n '); + buffer.write( + _renderClass_partial_property_5(context24, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicStaticMethods == true) { + buffer.write(''' +
+

Static Methods

+
'''); + var context25 = context2.publicStaticMethodsSorted; + if (context25 != null) { + for (var context26 in context25) { + buffer.write('\n '); + buffer.write( + _renderClass_partial_callable_6(context26, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicConstantFields == true) { + buffer.write(''' +
+

Constants

+ +
'''); + var context27 = context2.publicConstantFieldsSorted; + if (context27 != null) { + for (var context28 in context27) { + buffer.write('\n '); + buffer.write( + _renderClass_partial_constant_7(context28, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + } + buffer.write(''' + +
+ + + + + +'''); + buffer.write(_renderClass_partial_footer_9(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_head_0( + ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderClass_partial_source_link_1( + Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_feature_set_2( + Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_categorization_3( + Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_documentation_4( + Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_property_5( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderClass_partial_property_5_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderClass_partial_property_5_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String + __renderClass_partial_property_5_partial_categorization_0( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderClass_partial_property_5_partial_features_1( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_callable_6( + Method context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''''''); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') + → '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write(__renderClass_partial_callable_6_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderClass_partial_callable_6_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String + __renderClass_partial_callable_6_partial_categorization_0( + Method context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderClass_partial_callable_6_partial_features_1( + Method context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_constant_7( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + → const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(__renderClass_partial_constant_7_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderClass_partial_constant_7_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ '''); + buffer.write(context2.constantValueTruncated.toString()); + buffer.write(''' +
+
+'''); + return buffer.toString(); +} + +String + __renderClass_partial_constant_7_partial_categorization_0( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderClass_partial_constant_7_partial_features_1( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_search_sidebar_8( + ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderClass_partial_footer_9( + ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderConstructor(ConstructorTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderConstructor_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderConstructor_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderConstructor_partial_feature_set_2(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.constructor; + if (context2 != null) { + buffer.write(''' +
'''); + if (context2.hasAnnotations == true) { + buffer.write(''' +
+
    '''); + var context3 = context2.annotations; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  1. '''); + buffer.write(context4.linkedNameWithParameters.toString()); + buffer.write('''
  2. '''); + } + } + buffer.write(''' +
+
'''); + } + if (context2.isConst == true) { + buffer.write('''const'''); + } + buffer.write(''' + '''); + buffer.write(context2.nameWithGenerics.toString()); + buffer.write('''('''); + if (context2.hasParameters == true) { + buffer.write(context2.linkedParamsLines.toString()); + } + buffer.write(''') +
+ + '''); + buffer + .write(_renderConstructor_partial_documentation_3(context2, context0)); + buffer.write('\n\n '); + buffer.write(_renderConstructor_partial_source_code_4(context2, context0)); + buffer.writeln(); + } + buffer.write(''' +
+ + + + + +'''); + buffer.write(_renderConstructor_partial_footer_6(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_head_0(ConstructorTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderConstructor_partial_source_link_1( + Constructor context1, ConstructorTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_feature_set_2( + Constructor context1, ConstructorTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_documentation_3( + Constructor context1, ConstructorTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_source_code_4( + Constructor context1, ConstructorTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context1.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_search_sidebar_5( + ConstructorTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderConstructor_partial_footer_6(ConstructorTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderEnum(EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderEnum_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderEnum_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.name.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderEnum_partial_feature_set_2(context1, context0)); + buffer.write(' '); + buffer.write(_renderEnum_partial_categorization_3(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.eNum; + if (context2 != null) { + buffer.write('\n '); + buffer.write(_renderEnum_partial_documentation_4(context2, context0)); + buffer.writeln(); + if (context2.hasModifiers == true) { + buffer.write(''' +
+
'''); + if (context2.hasPublicSuperChainReversed == true) { + buffer.write(''' +
Inheritance
+
    +
  • '''); + buffer.write(context0.linkedObjectType.toString()); + buffer.write('''
  • '''); + var context3 = context2.publicSuperChainReversed; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  • '''); + buffer.write(context4.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
  • '''); + buffer.write(context2.name.toString()); + buffer.write('''
  • +
'''); + } + buffer.writeln(); + if (context2.hasPublicInterfaces == true) { + buffer.write(''' +
Implemented types
+
+
    '''); + var context5 = context2.publicInterfaces; + if (context5 != null) { + for (var context6 in context5) { + buffer.write(''' +
  • '''); + buffer.write(context6.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicMixedInTypes == true) { + buffer.write(''' +
Mixed in types
+
    '''); + var context7 = context2.publicMixedInTypes; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +
  • '''); + buffer.write(context8.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.writeln(); + if (context2.hasPublicImplementors == true) { + buffer.write(''' +
Implementers
+
    '''); + var context9 = context2.publicImplementorsSorted; + if (context9 != null) { + for (var context10 in context9) { + buffer.write(''' +
  • '''); + buffer.write(context10.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.writeln(); + if (context2.hasAnnotations == true) { + buffer.write(''' +
Annotations
+
    '''); + var context11 = context2.annotations; + if (context11 != null) { + for (var context12 in context11) { + buffer.write(''' +
  • '''); + buffer.write(context12.linkedNameWithParameters.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicConstantFields == true) { + buffer.write(''' +
+

Constants

+ +
'''); + var context13 = context2.publicConstantFieldsSorted; + if (context13 != null) { + for (var context14 in context13) { + buffer.write('\n '); + buffer.write( + _renderEnum_partial_constant_5(context14, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicConstructors == true) { + buffer.write(''' +
+

Constructors

+ +
'''); + var context15 = context2.publicConstructorsSorted; + if (context15 != null) { + for (var context16 in context15) { + buffer.write(''' +
+ '''); + buffer.write(context16.linkedName.toString()); + buffer.write('''('''); + buffer.write(context16.linkedParams.toString()); + buffer.write(''') +
+
+ '''); + buffer.write(context16.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context16.extendedDocLink.toString()); + if (context16.isConst == true) { + buffer.write(''' +
const
'''); + } + if (context16.isFactory == true) { + buffer.write(''' +
factory
'''); + } + buffer.write(''' +
'''); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceFields == true) { + buffer.write(''' +
+

Properties

+ +
'''); + var context17 = context2.publicInstanceFieldsSorted; + if (context17 != null) { + for (var context18 in context17) { + buffer.write('\n '); + buffer.write( + _renderEnum_partial_property_6(context18, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceMethods == true) { + buffer.write(''' +
+

Methods

+
'''); + var context19 = context2.publicInstanceMethodsSorted; + if (context19 != null) { + for (var context20 in context19) { + buffer.write('\n '); + buffer.write( + _renderEnum_partial_callable_7(context20, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceOperators == true) { + buffer.write(''' +
+

Operators

+
'''); + var context21 = context2.publicInstanceOperatorsSorted; + if (context21 != null) { + for (var context22 in context21) { + buffer.write('\n '); + buffer.write( + _renderEnum_partial_callable_7(context22, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicVariableStaticFields == true) { + buffer.write(''' +
+

Static Properties

+ +
'''); + var context23 = context2.publicVariableStaticFieldsSorted; + if (context23 != null) { + for (var context24 in context23) { + buffer.write('\n '); + buffer.write( + _renderEnum_partial_property_6(context24, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicStaticMethods == true) { + buffer.write(''' +
+

Static Methods

+
'''); + var context25 = context2.publicStaticMethodsSorted; + if (context25 != null) { + for (var context26 in context25) { + buffer.write('\n '); + buffer.write( + _renderEnum_partial_callable_7(context26, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + } + buffer.write(''' +
+ + + + + +'''); + buffer.write(_renderEnum_partial_footer_9(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_head_0(EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderEnum_partial_source_link_1( + Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_feature_set_2( + Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_categorization_3( + Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_documentation_4( + Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_constant_5( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + → const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(__renderEnum_partial_constant_5_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderEnum_partial_constant_5_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ '''); + buffer.write(context2.constantValueTruncated.toString()); + buffer.write(''' +
+
+'''); + return buffer.toString(); +} + +String __renderEnum_partial_constant_5_partial_categorization_0( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_constant_5_partial_features_1( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_property_6( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderEnum_partial_property_6_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderEnum_partial_property_6_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderEnum_partial_property_6_partial_categorization_0( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_property_6_partial_features_1( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_callable_7( + Method context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''''''); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') + → '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write(__renderEnum_partial_callable_7_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderEnum_partial_callable_7_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderEnum_partial_callable_7_partial_categorization_0( + Method context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_callable_7_partial_features_1( + Method context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_search_sidebar_8(EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderEnum_partial_footer_9(EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderError(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderError_partial_head_0(context0)); + buffer.write(''' + +
+

404: Something\'s gone wrong :-(

+ +
+

You\'ve tried to visit a page that doesn\'t exist. Luckily this site + has other pages.

+

If you were looking for something specific, try searching: +

+

+ +
+
+ + + + + +'''); + buffer.write(_renderError_partial_footer_3(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderError_partial_head_0(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderError_partial_search_sidebar_1(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderError_partial_packages_2(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
    '''); + var context1 = context0.localPackages; + if (context1 != null) { + for (var context2 in context1) { + if (context2.isFirstPackage == true) { + if (context2.hasDocumentedCategories == true) { + buffer.write(''' +
  1. Topics
  2. '''); + var context3 = context2.documentedCategoriesSorted; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  3. '''); + buffer.write(context4.linkedName.toString()); + buffer.write('''
  4. '''); + } + } + } + buffer.write(''' +
  5. Libraries
  6. '''); + } + if (context2.isFirstPackage != true) { + buffer.write(''' +
  7. '''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write('''
  8. '''); + } + var context5 = context2.defaultCategory; + if (context5 != null) { + var context6 = context5.publicLibrariesSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.write(''' +
  9. '''); + buffer.write(context7.linkedName.toString()); + buffer.write('''
  10. '''); + } + } + } + var context8 = context2.categoriesWithPublicLibraries; + if (context8 != null) { + for (var context9 in context8) { + buffer.write(''' +
  11. '''); + buffer.write(htmlEscape.convert(context9.name.toString())); + buffer.write('''
  12. '''); + var context10 = context9.publicLibrariesSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.write(''' +
  13. '''); + buffer.write(context11.linkedName.toString()); + buffer.write('''
  14. '''); + } + } + } + } + } + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String _renderError_partial_footer_3(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderExtension(ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderExtension_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderExtension_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderExtension_partial_feature_set_2(context1, context0)); + buffer.write(' '); + buffer.write(_renderExtension_partial_categorization_3(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.extension; + if (context2 != null) { + buffer.write('\n '); + buffer.write(_renderExtension_partial_documentation_4(context2, context0)); + buffer.write(''' +
+
+
on
+
+
    '''); + var context3 = context2.extendedType; + if (context3 != null) { + buffer.write(''' +
  • '''); + buffer.write(context3.linkedName.toString()); + buffer.write('''
  • '''); + } + buffer.write(''' +
+
+
+
+'''); + if (context2.hasPublicInstanceFields == true) { + buffer.write(''' +
+

Properties

+ +
'''); + var context4 = context2.publicInstanceFieldsSorted; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(_renderExtension_partial_property_5( + context5, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceMethods == true) { + buffer.write(''' +
+

Methods

+
'''); + var context6 = context2.publicInstanceMethodsSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.write('\n '); + buffer.write(_renderExtension_partial_callable_6( + context7, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceOperators == true) { + buffer.write(''' +
+

Operators

+
'''); + var context8 = context2.publicInstanceOperatorsSorted; + if (context8 != null) { + for (var context9 in context8) { + buffer.write('\n '); + buffer.write(_renderExtension_partial_callable_6( + context9, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicVariableStaticFields == true) { + buffer.write(''' +
+

Static Properties

+ +
'''); + var context10 = context2.publicVariableStaticFieldsSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.write('\n '); + buffer.write(_renderExtension_partial_property_5( + context11, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicStaticMethods == true) { + buffer.write(''' +
+

Static Methods

+
'''); + var context12 = context2.publicStaticMethodsSorted; + if (context12 != null) { + for (var context13 in context12) { + buffer.write('\n '); + buffer.write(_renderExtension_partial_callable_6( + context13, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicConstantFields == true) { + buffer.write(''' +
+

Constants

+ +
'''); + var context14 = context2.publicConstantFieldsSorted; + if (context14 != null) { + for (var context15 in context14) { + buffer.write('\n '); + buffer.write(_renderExtension_partial_constant_7( + context15, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + } + buffer.write(''' + +
+ + + + + +'''); + buffer.write(_renderExtension_partial_footer_9(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_head_0( + ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderExtension_partial_source_link_1( + Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_feature_set_2( + Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_categorization_3( + Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_documentation_4( + Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_property_5( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderExtension_partial_property_5_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderExtension_partial_property_5_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderExtension_partial_property_5_partial_categorization_0< + T extends Extension>( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_property_5_partial_features_1< + T extends Extension>( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_callable_6( + Method context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''''''); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') + → '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write(__renderExtension_partial_callable_6_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderExtension_partial_callable_6_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderExtension_partial_callable_6_partial_categorization_0< + T extends Extension>( + Method context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_callable_6_partial_features_1< + T extends Extension>( + Method context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_constant_7( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + → const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(__renderExtension_partial_constant_7_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderExtension_partial_constant_7_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ '''); + buffer.write(context2.constantValueTruncated.toString()); + buffer.write(''' +
+
+'''); + return buffer.toString(); +} + +String __renderExtension_partial_constant_7_partial_categorization_0< + T extends Extension>( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_constant_7_partial_features_1< + T extends Extension>( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_search_sidebar_8( + ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderExtension_partial_footer_9( + ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderFunction(FunctionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderFunction_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderFunction_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderFunction_partial_feature_set_2(context1, context0)); + buffer.write(' '); + buffer.write(_renderFunction_partial_categorization_3(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.function; + if (context2 != null) { + buffer.write(''' +
+ '''); + buffer.write( + _renderFunction_partial_callable_multiline_4(context2, context0)); + buffer.write(''' +
+ '''); + buffer.write(_renderFunction_partial_documentation_5(context2, context0)); + buffer.write('\n\n '); + buffer.write(_renderFunction_partial_source_code_6(context2, context0)); + buffer.writeln(); + } + buffer.write(''' +
+ + + + + +'''); + buffer.write(_renderFunction_partial_footer_8(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_head_0(FunctionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderFunction_partial_source_link_1( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_feature_set_2( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_categorization_3( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_callable_multiline_4( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasAnnotations == true) { + buffer.write(''' +
+
    '''); + var context2 = context1.annotations; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +
  1. '''); + buffer.write(context3.linkedNameWithParameters.toString()); + buffer.write('''
  2. '''); + } + } + buffer.write(''' +
+
'''); + } + buffer.write(''' + +'''); + buffer.write(context1.modelType.returnType.linkedName.toString()); + buffer.write(''' +'''); + buffer.write( + __renderFunction_partial_callable_multiline_4_partial_name_summary_0( + context1, context0)); + buffer.write(context1.genericParameters.toString()); + buffer.write('''('''); + if (context1.hasParameters == true) { + buffer.write(context1.linkedParamsLines.toString()); + } + buffer.write(''') +'''); + return buffer.toString(); +} + +String __renderFunction_partial_callable_multiline_4_partial_name_summary_0( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String _renderFunction_partial_documentation_5( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_source_code_6( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context1.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_search_sidebar_7(FunctionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderFunction_partial_footer_8(FunctionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderIndex(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderIndex_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.defaultPackage; + if (context1 != null) { + buffer.write('\n '); + buffer.write(_renderIndex_partial_documentation_1(context1, context0)); + } + buffer.writeln(); + var context2 = context0.localPackages; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +
'''); + if (context3.isFirstPackage == true) { + buffer.write(''' +

Libraries

'''); + } + if (context3.isFirstPackage != true) { + buffer.write(''' +

'''); + buffer.write(htmlEscape.convert(context3.name.toString())); + buffer.write('''

'''); + } + buffer.write(''' +
'''); + var context4 = context3.defaultCategory; + if (context4 != null) { + var context5 = context4.publicLibrariesSorted; + if (context5 != null) { + for (var context6 in context5) { + buffer.write('\n '); + buffer.write(_renderIndex_partial_library_2( + context6, context4, context3, context0)); + } + } + } + var context7 = context3.categoriesWithPublicLibraries; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +

'''); + buffer.write(htmlEscape.convert(context8.name.toString())); + buffer.write('''

'''); + var context9 = context8.publicLibrariesSorted; + if (context9 != null) { + for (var context10 in context9) { + buffer.write('\n '); + buffer.write(_renderIndex_partial_library_2( + context10, context8, context3, context0)); + } + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.write(''' + +
+ + + + + +'''); + buffer.write(_renderIndex_partial_footer_5(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderIndex_partial_head_0(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderIndex_partial_documentation_1( + Package context1, PackageTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderIndex_partial_library_2(Library context3, + LibraryContainer context2, Package context1, PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderIndex_partial_library_2_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+
'''); + if (context3.isDocumented == true) { + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String __renderIndex_partial_library_2_partial_categorization_0( + Library context3, + LibraryContainer context2, + Package context1, + PackageTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderIndex_partial_search_sidebar_3(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderIndex_partial_packages_4(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
    '''); + var context1 = context0.localPackages; + if (context1 != null) { + for (var context2 in context1) { + if (context2.isFirstPackage == true) { + if (context2.hasDocumentedCategories == true) { + buffer.write(''' +
  1. Topics
  2. '''); + var context3 = context2.documentedCategoriesSorted; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  3. '''); + buffer.write(context4.linkedName.toString()); + buffer.write('''
  4. '''); + } + } + } + buffer.write(''' +
  5. Libraries
  6. '''); + } + if (context2.isFirstPackage != true) { + buffer.write(''' +
  7. '''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write('''
  8. '''); + } + var context5 = context2.defaultCategory; + if (context5 != null) { + var context6 = context5.publicLibrariesSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.write(''' +
  9. '''); + buffer.write(context7.linkedName.toString()); + buffer.write('''
  10. '''); + } + } + } + var context8 = context2.categoriesWithPublicLibraries; + if (context8 != null) { + for (var context9 in context8) { + buffer.write(''' +
  11. '''); + buffer.write(htmlEscape.convert(context9.name.toString())); + buffer.write('''
  12. '''); + var context10 = context9.publicLibrariesSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.write(''' +
  13. '''); + buffer.write(context11.linkedName.toString()); + buffer.write('''
  14. '''); + } + } + } + } + } + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String _renderIndex_partial_footer_5(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderLibrary(LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderLibrary_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderLibrary_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.name.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderLibrary_partial_feature_set_2(context1, context0)); + buffer.write(' '); + buffer.write(_renderLibrary_partial_categorization_3(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.library; + if (context2 != null) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_documentation_4(context2, context0)); + } + buffer.writeln(); + var context3 = context0.library; + if (context3 != null) { + if (context3.hasPublicClasses == true) { + buffer.write(''' +
+

Classes

+ +
'''); + var context4 = context3.library; + if (context4 != null) { + var context5 = context4.publicClassesSorted; + if (context5 != null) { + for (var context6 in context5) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_class_5( + context6, context4, context3, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.writeln(); + var context7 = context0.library; + if (context7 != null) { + if (context7.hasPublicMixins == true) { + buffer.write(''' +
+

Mixins

+ +
'''); + var context8 = context7.library; + if (context8 != null) { + var context9 = context8.publicMixinsSorted; + if (context9 != null) { + for (var context10 in context9) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_mixin_6( + context10, context8, context7, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.writeln(); + var context11 = context0.library; + if (context11 != null) { + if (context11.hasPublicExtensions == true) { + buffer.write(''' +
+

Extensions

+ +
'''); + var context12 = context11.library; + if (context12 != null) { + var context13 = context12.publicExtensionsSorted; + if (context13 != null) { + for (var context14 in context13) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_extension_7( + context14, context12, context11, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.writeln(); + var context15 = context0.library; + if (context15 != null) { + if (context15.hasPublicConstants == true) { + buffer.write(''' +
+

Constants

+ +
'''); + var context16 = context15.library; + if (context16 != null) { + var context17 = context16.publicConstantsSorted; + if (context17 != null) { + for (var context18 in context17) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_constant_8( + context18, context16, context15, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.writeln(); + var context19 = context0.library; + if (context19 != null) { + if (context19.hasPublicProperties == true) { + buffer.write(''' +
+

Properties

+ +
'''); + var context20 = context19.library; + if (context20 != null) { + var context21 = context20.publicPropertiesSorted; + if (context21 != null) { + for (var context22 in context21) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_property_9( + context22, context20, context19, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.writeln(); + var context23 = context0.library; + if (context23 != null) { + if (context23.hasPublicFunctions == true) { + buffer.write(''' +
+

Functions

+ +
'''); + var context24 = context23.library; + if (context24 != null) { + var context25 = context24.publicFunctionsSorted; + if (context25 != null) { + for (var context26 in context25) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_callable_10( + context26, context24, context23, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.writeln(); + var context27 = context0.library; + if (context27 != null) { + if (context27.hasPublicEnums == true) { + buffer.write(''' +
+

Enums

+ +
'''); + var context28 = context27.library; + if (context28 != null) { + var context29 = context28.publicEnumsSorted; + if (context29 != null) { + for (var context30 in context29) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_class_5( + context30, context28, context27, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.writeln(); + var context31 = context0.library; + if (context31 != null) { + if (context31.hasPublicTypedefs == true) { + buffer.write(''' +
+

Typedefs

+ +
'''); + var context32 = context31.library; + if (context32 != null) { + var context33 = context32.publicTypedefsSorted; + if (context33 != null) { + for (var context34 in context33) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_typedef_11( + context34, context32, context31, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.writeln(); + var context35 = context0.library; + if (context35 != null) { + if (context35.hasPublicExceptions == true) { + buffer.write(''' +
+

Exceptions / Errors

+ +
'''); + var context36 = context35.library; + if (context36 != null) { + var context37 = context36.publicExceptionsSorted; + if (context37 != null) { + for (var context38 in context37) { + buffer.write('\n '); + buffer.write(_renderLibrary_partial_class_5( + context38, context36, context35, context0)); + } + } + } + buffer.write(''' +
+
'''); + } + } + buffer.write(''' + +
+ + + + + +'''); + buffer.write(_renderLibrary_partial_footer_14(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_head_0(LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderLibrary_partial_source_link_1( + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_feature_set_2( + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_categorization_3( + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_documentation_4( + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_class_5(Class context3, Library context2, + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.write(''' '''); + buffer.write(__renderLibrary_partial_class_5_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String __renderLibrary_partial_class_5_partial_categorization_0(Class context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_mixin_6(Mixin context3, Library context2, + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.write(''' '''); + buffer.write(__renderLibrary_partial_mixin_6_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String __renderLibrary_partial_mixin_6_partial_categorization_0(Mixin context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_extension_7(Extension context3, Library context2, + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderLibrary_partial_extension_7_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write(''' +
+ +'''); + return buffer.toString(); +} + +String __renderLibrary_partial_extension_7_partial_categorization_0( + Extension context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_constant_8(TopLevelVariable context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(''' + → const '''); + buffer.write(context3.modelType.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(__renderLibrary_partial_constant_8_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderLibrary_partial_constant_8_partial_features_1( + context3, context2, context1, context0)); + buffer.write(''' +
+ '''); + buffer.write(context3.constantValueTruncated.toString()); + buffer.write(''' +
+
+'''); + return buffer.toString(); +} + +String __renderLibrary_partial_constant_8_partial_categorization_0( + TopLevelVariable context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_constant_8_partial_features_1( + TopLevelVariable context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_property_9(TopLevelVariable context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(context3.arrow.toString()); + buffer.write(' '); + buffer.write(context3.modelType.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderLibrary_partial_property_9_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderLibrary_partial_property_9_partial_features_1( + context3, context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderLibrary_partial_property_9_partial_categorization_0( + TopLevelVariable context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_property_9_partial_features_1( + TopLevelVariable context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_callable_10(ModelFunctionTyped context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(''''''); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context3.linkedParamsNoMetadata.toString()); + buffer.write(''') + → '''); + buffer.write(context3.modelType.returnType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write(__renderLibrary_partial_callable_10_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderLibrary_partial_callable_10_partial_features_1( + context3, context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderLibrary_partial_callable_10_partial_categorization_0( + ModelFunctionTyped context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_callable_10_partial_features_1( + ModelFunctionTyped context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_typedef_11(Typedef context3, Library context2, + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.isCallable == true) { + var context4 = context3.asCallable; + if (context4 != null) { + buffer.write(''' +
+ '''); + buffer.write(context4.linkedName.toString()); + buffer.write(''''''); + buffer.write(context4.linkedGenericParameters.toString()); + buffer.write(''' + = '''); + buffer.write(context4.modelType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write(__renderLibrary_partial_typedef_11_partial_categorization_0( + context4, context3, context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context4.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context4.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderLibrary_partial_typedef_11_partial_features_1( + context4, context3, context2, context1, context0)); + buffer.write(''' + '''); + } + } + if (context3.isCallable != true) { + buffer.write('\n '); + buffer.write(__renderLibrary_partial_typedef_11_partial_type_2( + context3, context2, context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_typedef_11_partial_categorization_0( + FunctionTypedef context4, + Typedef context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context4.hasCategoryNames == true) { + var context5 = context4.displayedCategories; + if (context5 != null) { + for (var context6 in context5) { + buffer.write('\n '); + buffer.write(context6.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_typedef_11_partial_features_1( + FunctionTypedef context4, + Typedef context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context4.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context4.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_typedef_11_partial_type_2(Typedef context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context3.linkedName.toString()); + buffer.write(''''''); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.write(''' + = '''); + buffer.write(context3.modelType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write( + ___renderLibrary_partial_typedef_11_partial_type_2_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write( + ___renderLibrary_partial_typedef_11_partial_type_2_partial_features_1( + context3, context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String + ___renderLibrary_partial_typedef_11_partial_type_2_partial_categorization_0( + Typedef context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.write('\n '); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String ___renderLibrary_partial_typedef_11_partial_type_2_partial_features_1( + Typedef context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_search_sidebar_12(LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderLibrary_partial_packages_13(LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
    '''); + var context1 = context0.localPackages; + if (context1 != null) { + for (var context2 in context1) { + if (context2.isFirstPackage == true) { + if (context2.hasDocumentedCategories == true) { + buffer.write(''' +
  1. Topics
  2. '''); + var context3 = context2.documentedCategoriesSorted; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  3. '''); + buffer.write(context4.linkedName.toString()); + buffer.write('''
  4. '''); + } + } + } + buffer.write(''' +
  5. Libraries
  6. '''); + } + if (context2.isFirstPackage != true) { + buffer.write(''' +
  7. '''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write('''
  8. '''); + } + var context5 = context2.defaultCategory; + if (context5 != null) { + var context6 = context5.publicLibrariesSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.write(''' +
  9. '''); + buffer.write(context7.linkedName.toString()); + buffer.write('''
  10. '''); + } + } + } + var context8 = context2.categoriesWithPublicLibraries; + if (context8 != null) { + for (var context9 in context8) { + buffer.write(''' +
  11. '''); + buffer.write(htmlEscape.convert(context9.name.toString())); + buffer.write('''
  12. '''); + var context10 = context9.publicLibrariesSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.write(''' +
  13. '''); + buffer.write(context11.linkedName.toString()); + buffer.write('''
  14. '''); + } + } + } + } + } + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String _renderLibrary_partial_footer_14(LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderMethod(MethodTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderMethod_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderMethod_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderMethod_partial_feature_set_2(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.method; + if (context2 != null) { + buffer.write(''' +
+ '''); + buffer + .write(_renderMethod_partial_callable_multiline_3(context2, context0)); + buffer.write('\n '); + buffer.write(_renderMethod_partial_features_4(context2, context0)); + buffer.write(''' +
+ '''); + buffer.write(_renderMethod_partial_documentation_5(context2, context0)); + buffer.write('\n\n '); + buffer.write(_renderMethod_partial_source_code_6(context2, context0)); + buffer.writeln(); + } + buffer.write(''' +
+ + + + + +'''); + buffer.write(_renderMethod_partial_footer_8(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_head_0(MethodTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderMethod_partial_source_link_1( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_feature_set_2( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_callable_multiline_3( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasAnnotations == true) { + buffer.write(''' +
+
    '''); + var context2 = context1.annotations; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +
  1. '''); + buffer.write(context3.linkedNameWithParameters.toString()); + buffer.write('''
  2. '''); + } + } + buffer.write(''' +
+
'''); + } + buffer.write(''' + +'''); + buffer.write(context1.modelType.returnType.linkedName.toString()); + buffer.write(''' +'''); + buffer.write( + __renderMethod_partial_callable_multiline_3_partial_name_summary_0( + context1, context0)); + buffer.write(context1.genericParameters.toString()); + buffer.write('''('''); + if (context1.hasParameters == true) { + buffer.write(context1.linkedParamsLines.toString()); + } + buffer.write(''') +'''); + return buffer.toString(); +} + +String __renderMethod_partial_callable_multiline_3_partial_name_summary_0( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String _renderMethod_partial_features_4( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context1.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_documentation_5( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_source_code_6( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context1.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_search_sidebar_7(MethodTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderMethod_partial_footer_8(MethodTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderMixin(MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderMixin_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderMixin_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderMixin_partial_feature_set_2(context1, context0)); + buffer.write(' '); + buffer.write(_renderMixin_partial_categorization_3(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.mixin; + if (context2 != null) { + buffer.write('\n '); + buffer.write(_renderMixin_partial_documentation_4(context2, context0)); + buffer.writeln(); + if (context2.hasModifiers == true) { + buffer.write(''' +
+
'''); + if (context2.hasPublicSuperclassConstraints == true) { + buffer.write(''' +
Superclass Constraints
+
    '''); + var context3 = context2.publicSuperclassConstraints; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  • '''); + buffer.write(context4.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.writeln(); + if (context2.hasPublicSuperChainReversed == true) { + buffer.write(''' +
Inheritance
+
    +
  • '''); + buffer.write(context0.linkedObjectType.toString()); + buffer.write('''
  • '''); + var context5 = context2.publicSuperChainReversed; + if (context5 != null) { + for (var context6 in context5) { + buffer.write(''' +
  • '''); + buffer.write(context6.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
  • '''); + buffer.write(context2.name.toString()); + buffer.write('''
  • +
'''); + } + buffer.writeln(); + if (context2.hasPublicInterfaces == true) { + buffer.write(''' +
Implements
+
+
    '''); + var context7 = context2.publicInterfaces; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +
  • '''); + buffer.write(context8.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicMixedInTypes == true) { + buffer.write(''' +
Mixes-in
+
    '''); + var context9 = context2.publicMixedInTypes; + if (context9 != null) { + for (var context10 in context9) { + buffer.write(''' +
  • '''); + buffer.write(context10.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.writeln(); + if (context2.hasPublicImplementors == true) { + buffer.write(''' +
Implemented by
+
    '''); + var context11 = context2.publicImplementorsSorted; + if (context11 != null) { + for (var context12 in context11) { + buffer.write(''' +
  • '''); + buffer.write(context12.linkedName.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.writeln(); + if (context2.hasAnnotations == true) { + buffer.write(''' +
Annotations
+
    '''); + var context13 = context2.annotations; + if (context13 != null) { + for (var context14 in context13) { + buffer.write(''' +
  • '''); + buffer.write(context14.linkedNameWithParameters.toString()); + buffer.write('''
  • '''); + } + } + buffer.write(''' +
'''); + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicConstructors == true) { + buffer.write(''' +
+

Constructors

+ +
'''); + var context15 = context2.publicConstructorsSorted; + if (context15 != null) { + for (var context16 in context15) { + buffer.write(''' +
+ '''); + buffer.write(context16.linkedName.toString()); + buffer.write('''('''); + buffer.write(context16.linkedParams.toString()); + buffer.write(''') +
+
+ '''); + buffer.write(context16.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context16.extendedDocLink.toString()); + if (context16.isConst == true) { + buffer.write(''' +
const
'''); + } + if (context16.isFactory == true) { + buffer.write(''' +
factory
'''); + } + buffer.write(''' +
'''); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceFields == true) { + buffer.write(''' +
+

Properties

+ +
'''); + var context17 = context2.publicInstanceFields; + if (context17 != null) { + for (var context18 in context17) { + buffer.write('\n '); + buffer.write( + _renderMixin_partial_property_5(context18, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceMethods == true) { + buffer.write(''' +
+

Methods

+
'''); + var context19 = context2.publicInstanceMethods; + if (context19 != null) { + for (var context20 in context19) { + buffer.write('\n '); + buffer.write( + _renderMixin_partial_callable_6(context20, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicInstanceOperators == true) { + buffer.write(''' +
+

Operators

+
'''); + var context21 = context2.publicInstanceOperatorsSorted; + if (context21 != null) { + for (var context22 in context21) { + buffer.write('\n '); + buffer.write( + _renderMixin_partial_callable_6(context22, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicVariableStaticFields == true) { + buffer.write(''' +
+

Static Properties

+ +
'''); + var context23 = context2.publicVariableStaticFieldsSorted; + if (context23 != null) { + for (var context24 in context23) { + buffer.write('\n '); + buffer.write( + _renderMixin_partial_property_5(context24, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicStaticMethods == true) { + buffer.write(''' +
+

Static Methods

+
'''); + var context25 = context2.publicStaticMethods; + if (context25 != null) { + for (var context26 in context25) { + buffer.write('\n '); + buffer.write( + _renderMixin_partial_callable_6(context26, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + if (context2.hasPublicConstantFields == true) { + buffer.write(''' +
+

Constants

+ +
'''); + var context27 = context2.publicConstantFieldsSorted; + if (context27 != null) { + for (var context28 in context27) { + buffer.write('\n '); + buffer.write( + _renderMixin_partial_constant_7(context28, context2, context0)); + } + } + buffer.write(''' +
+
'''); + } + } + buffer.write(''' +
+ + + + + +'''); + buffer.write(_renderMixin_partial_footer_9(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_head_0(MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderMixin_partial_source_link_1( + Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_feature_set_2( + Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_categorization_3( + Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_documentation_4( + Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_property_5( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' '''); + buffer.write(__renderMixin_partial_property_5_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderMixin_partial_property_5_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderMixin_partial_property_5_partial_categorization_0( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_property_5_partial_features_1( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_callable_6( + Method context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''''''); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') + → '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(''' + + '''); + buffer.write(__renderMixin_partial_callable_6_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+ + '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderMixin_partial_callable_6_partial_features_1( + context2, context1, context0)); + buffer.write(''' + +'''); + return buffer.toString(); +} + +String __renderMixin_partial_callable_6_partial_categorization_0( + Method context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_callable_6_partial_features_1( + Method context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_constant_7( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' + → const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''' + '''); + buffer.write(__renderMixin_partial_constant_7_partial_categorization_0( + context2, context1, context0)); + buffer.write(''' +
+
+ '''); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write('\n '); + buffer.write(__renderMixin_partial_constant_7_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ '''); + buffer.write(context2.constantValueTruncated.toString()); + buffer.write(''' +
+
+'''); + return buffer.toString(); +} + +String __renderMixin_partial_constant_7_partial_categorization_0( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.write('\n '); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_constant_7_partial_features_1( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_search_sidebar_8(MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderMixin_partial_footer_9(MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderProperty(PropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderProperty_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderProperty_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderProperty_partial_feature_set_2(context1, context0)); + buffer.write('''

'''); + } + buffer.writeln(); + var context2 = context0.self; + if (context2 != null) { + if (context2.hasNoGetterSetter == true) { + buffer.write(''' +
+ '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write('\n '); + buffer.write(_renderProperty_partial_name_summary_3(context2, context0)); + buffer.write('\n '); + buffer.write(_renderProperty_partial_features_4(context2, context0)); + buffer.write(''' +
+ '''); + buffer.write(_renderProperty_partial_documentation_5(context2, context0)); + buffer.write('\n '); + buffer.write(_renderProperty_partial_source_code_6(context2, context0)); + } + buffer.writeln(); + if (context2.hasGetterOrSetter == true) { + if (context2.hasGetter == true) { + buffer.write('\n '); + buffer.write( + _renderProperty_partial_accessor_getter_7(context2, context0)); + } + buffer.writeln(); + if (context2.hasSetter == true) { + buffer.write('\n '); + buffer.write( + _renderProperty_partial_accessor_setter_8(context2, context0)); + } + } + } + buffer.write(''' +
+ + + + + +'''); + buffer.write(_renderProperty_partial_footer_10(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_head_0(PropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderProperty_partial_source_link_1( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_feature_set_2( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_name_summary_3( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String _renderProperty_partial_features_4( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context1.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_documentation_5( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_source_code_6( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context1.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_accessor_getter_7( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + var context2 = context1.getter; + if (context2 != null) { + buffer.write(''' +
+ +
+ '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(''' + '''); + buffer.write( + __renderProperty_partial_accessor_getter_7_partial_name_summary_0( + context2, context1, context0)); + buffer.write('\n '); + buffer.write(__renderProperty_partial_accessor_getter_7_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ +'''); + buffer.write( + __renderProperty_partial_accessor_getter_7_partial_documentation_2( + context2, context1, context0)); + buffer.writeln(); + buffer.write( + __renderProperty_partial_accessor_getter_7_partial_source_code_3( + context2, context1, context0)); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_getter_7_partial_name_summary_0( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_getter_7_partial_features_1( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_getter_7_partial_documentation_2( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context2.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_getter_7_partial_source_code_3( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context2.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_accessor_setter_8( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + var context2 = context1.setter; + if (context2 != null) { + buffer.write(''' +
+ +
+ void + '''); + buffer.write( + __renderProperty_partial_accessor_setter_8_partial_name_summary_0( + context2, context1, context0)); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') + '''); + buffer.write(__renderProperty_partial_accessor_setter_8_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ +'''); + buffer.write( + __renderProperty_partial_accessor_setter_8_partial_documentation_2( + context2, context1, context0)); + buffer.writeln(); + buffer.write( + __renderProperty_partial_accessor_setter_8_partial_source_code_3( + context2, context1, context0)); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_setter_8_partial_name_summary_0( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_setter_8_partial_features_1( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_setter_8_partial_documentation_2( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context2.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_setter_8_partial_source_code_3( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context2.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_search_sidebar_9(PropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderProperty_partial_footer_10(PropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderSidebarForContainer( + TemplateDataWithContainer context0) { + final buffer = StringBuffer(); + buffer.write('''
    '''); + var context1 = context0.container; + if (context1 != null) { + buffer.writeln(); + if (context1.isClass == true) { + if (context1.hasPublicConstructors == true) { + buffer.write(''' +
  1. Constructors
  2. '''); + var context2 = context1.publicConstructorsSorted; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +
  3. '''); + buffer.write(htmlEscape.convert(context3.shortName.toString())); + buffer.write('''
  4. '''); + } + } + } + } + buffer.writeln(); + if (context1.isEnum == true) { + if (context1.hasPublicConstantFields == true) { + buffer.write(''' +
  5. Constants
  6. '''); + var context4 = context1.publicConstantFieldsSorted; + if (context4 != null) { + for (var context5 in context4) { + buffer.write(''' +
  7. '''); + buffer.write(context5.linkedName.toString()); + buffer.write('''
  8. '''); + } + } + } + } + buffer.writeln(); + if (context1.isClassOrEnum == true) { + if (context1.hasPublicInstanceFields == true) { + buffer.write(''' +
  9. + Properties +
  10. '''); + var context6 = context1.publicInstanceFieldsSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.write(''' + '''); + buffer.write(context7.linkedName.toString()); + buffer.write(''''''); + } + } + } + buffer.writeln(); + if (context1.hasPublicInstanceMethods == true) { + buffer.write(''' +
  11. Methods
  12. '''); + var context8 = context1.publicInstanceMethodsSorted; + if (context8 != null) { + for (var context9 in context8) { + buffer.write(''' + '''); + buffer.write(context9.linkedName.toString()); + buffer.write(''''''); + } + } + } + buffer.writeln(); + if (context1.hasPublicInstanceOperators == true) { + buffer.write(''' +
  13. Operators
  14. '''); + var context10 = context1.publicInstanceOperatorsSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.write(''' + '''); + buffer.write(context11.linkedName.toString()); + buffer.write(''''''); + } + } + } + } + buffer.writeln(); + if (context1.isExtension == true) { + if (context1.hasPublicInstanceFields == true) { + buffer.write(''' +
  15. Properties +
  16. '''); + var context12 = context1.publicInstanceFieldsSorted; + if (context12 != null) { + for (var context13 in context12) { + buffer.write(''' +
  17. '''); + buffer.write(context13.linkedName.toString()); + buffer.write('''
  18. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicInstanceMethods == true) { + buffer.write(''' +
  19. Methods
  20. '''); + var context14 = context1.publicInstanceMethodsSorted; + if (context14 != null) { + for (var context15 in context14) { + buffer.write(''' +
  21. '''); + buffer.write(context15.linkedName.toString()); + buffer.write('''
  22. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicInstanceOperators == true) { + buffer.write(''' +
  23. Operators
  24. '''); + var context16 = context1.publicInstanceOperatorsSorted; + if (context16 != null) { + for (var context17 in context16) { + buffer.write(''' +
  25. '''); + buffer.write(context17.linkedName.toString()); + buffer.write('''
  26. '''); + } + } + } + } + buffer.writeln(); + if (context1.isClassOrExtension == true) { + if (context1.hasPublicVariableStaticFields == true) { + buffer.write(''' +
  27. Static properties
  28. '''); + var context18 = context1.publicVariableStaticFieldsSorted; + if (context18 != null) { + for (var context19 in context18) { + buffer.write(''' +
  29. '''); + buffer.write(context19.linkedName.toString()); + buffer.write('''
  30. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicStaticMethods == true) { + buffer.write(''' +
  31. Static methods
  32. '''); + var context20 = context1.publicStaticMethodsSorted; + if (context20 != null) { + for (var context21 in context20) { + buffer.write(''' +
  33. '''); + buffer.write(context21.linkedName.toString()); + buffer.write('''
  34. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicConstantFields == true) { + buffer.write(''' +
  35. Constants
  36. '''); + var context22 = context1.publicConstantFieldsSorted; + if (context22 != null) { + for (var context23 in context22) { + buffer.write(''' +
  37. '''); + buffer.write(context23.linkedName.toString()); + buffer.write('''
  38. '''); + } + } + } + } + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String renderSidebarForLibrary( + TemplateDataWithLibrary context0) { + final buffer = StringBuffer(); + buffer.write('''
    '''); + var context1 = context0.library; + if (context1 != null) { + if (context1.hasPublicClasses == true) { + buffer.write(''' +
  1. Classes
  2. '''); + var context2 = context1.publicClassesSorted; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +
  3. '''); + buffer.write(context3.linkedName.toString()); + buffer.write('''
  4. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicExtensions == true) { + buffer.write(''' +
  5. Extensions
  6. '''); + var context4 = context1.publicExtensionsSorted; + if (context4 != null) { + for (var context5 in context4) { + buffer.write(''' +
  7. '''); + buffer.write(context5.linkedName.toString()); + buffer.write('''
  8. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicMixins == true) { + buffer.write(''' +
  9. Mixins
  10. '''); + var context6 = context1.publicMixinsSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.write(''' +
  11. '''); + buffer.write(context7.linkedName.toString()); + buffer.write('''
  12. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicConstants == true) { + buffer.write(''' +
  13. Constants
  14. '''); + var context8 = context1.publicConstantsSorted; + if (context8 != null) { + for (var context9 in context8) { + buffer.write(''' +
  15. '''); + buffer.write(context9.linkedName.toString()); + buffer.write('''
  16. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicProperties == true) { + buffer.write(''' +
  17. Properties
  18. '''); + var context10 = context1.publicPropertiesSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.write(''' +
  19. '''); + buffer.write(context11.linkedName.toString()); + buffer.write('''
  20. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicFunctions == true) { + buffer.write(''' +
  21. Functions
  22. '''); + var context12 = context1.publicFunctionsSorted; + if (context12 != null) { + for (var context13 in context12) { + buffer.write(''' +
  23. '''); + buffer.write(context13.linkedName.toString()); + buffer.write('''
  24. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicEnums == true) { + buffer.write(''' +
  25. Enums
  26. '''); + var context14 = context1.publicEnumsSorted; + if (context14 != null) { + for (var context15 in context14) { + buffer.write(''' +
  27. '''); + buffer.write(context15.linkedName.toString()); + buffer.write('''
  28. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicTypedefs == true) { + buffer.write(''' +
  29. Typedefs
  30. '''); + var context16 = context1.publicTypedefsSorted; + if (context16 != null) { + for (var context17 in context16) { + buffer.write(''' +
  31. '''); + buffer.write(context17.linkedName.toString()); + buffer.write('''
  32. '''); + } + } + } + buffer.writeln(); + if (context1.hasPublicExceptions == true) { + buffer.write(''' +
  33. Exceptions
  34. '''); + var context18 = context1.publicExceptionsSorted; + if (context18 != null) { + for (var context19 in context18) { + buffer.write(''' +
  35. '''); + buffer.write(context19.linkedName.toString()); + buffer.write('''
  36. '''); + } + } + } + } + buffer.write(''' +
+'''); + return buffer.toString(); +} + +String renderTopLevelProperty(TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderTopLevelProperty_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write( + _renderTopLevelProperty_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.name.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write( + _renderTopLevelProperty_partial_feature_set_2(context1, context0)); + buffer.write(' '); + buffer.write( + _renderTopLevelProperty_partial_categorization_3(context1, context0)); + buffer.write('''

+'''); + if (context1.hasNoGetterSetter == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.modelType.linkedName.toString()); + buffer.write('\n '); + buffer.write( + _renderTopLevelProperty_partial_name_summary_4(context1, context0)); + buffer.write('\n '); + buffer.write( + _renderTopLevelProperty_partial_features_5(context1, context0)); + buffer.write(''' +
+ '''); + buffer.write( + _renderTopLevelProperty_partial_documentation_6(context1, context0)); + buffer.write('\n '); + buffer.write( + _renderTopLevelProperty_partial_source_code_7(context1, context0)); + } + buffer.writeln(); + if (context1.hasExplicitGetter == true) { + buffer.write('\n '); + buffer.write(_renderTopLevelProperty_partial_accessor_getter_8( + context1, context0)); + } + buffer.writeln(); + if (context1.hasExplicitSetter == true) { + buffer.write('\n '); + buffer.write(_renderTopLevelProperty_partial_accessor_setter_9( + context1, context0)); + } + } + buffer.write(''' +
+ + + + + +'''); + buffer.write(_renderTopLevelProperty_partial_footer_11(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_head_0( + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_source_link_1( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_feature_set_2( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_categorization_3( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_name_summary_4( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_features_5( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context1.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_documentation_6( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_source_code_7( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context1.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_accessor_getter_8( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + var context2 = context1.getter; + if (context2 != null) { + buffer.write(''' +
+ +
+ '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(''' + '''); + buffer.write( + __renderTopLevelProperty_partial_accessor_getter_8_partial_name_summary_0( + context2, context1, context0)); + buffer.write('\n '); + buffer.write( + __renderTopLevelProperty_partial_accessor_getter_8_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ +'''); + buffer.write( + __renderTopLevelProperty_partial_accessor_getter_8_partial_documentation_2( + context2, context1, context0)); + buffer.writeln(); + buffer.write( + __renderTopLevelProperty_partial_accessor_getter_8_partial_source_code_3( + context2, context1, context0)); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String + __renderTopLevelProperty_partial_accessor_getter_8_partial_name_summary_0( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String __renderTopLevelProperty_partial_accessor_getter_8_partial_features_1( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String + __renderTopLevelProperty_partial_accessor_getter_8_partial_documentation_2( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context2.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderTopLevelProperty_partial_accessor_getter_8_partial_source_code_3( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context2.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_accessor_setter_9( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + var context2 = context1.setter; + if (context2 != null) { + buffer.write(''' +
+ +
+ void + '''); + buffer.write( + __renderTopLevelProperty_partial_accessor_setter_9_partial_name_summary_0( + context2, context1, context0)); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') + '''); + buffer.write( + __renderTopLevelProperty_partial_accessor_setter_9_partial_features_1( + context2, context1, context0)); + buffer.write(''' +
+ +'''); + buffer.write( + __renderTopLevelProperty_partial_accessor_setter_9_partial_documentation_2( + context2, context1, context0)); + buffer.writeln(); + buffer.write( + __renderTopLevelProperty_partial_accessor_setter_9_partial_source_code_3( + context2, context1, context0)); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String + __renderTopLevelProperty_partial_accessor_setter_9_partial_name_summary_0( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String __renderTopLevelProperty_partial_accessor_setter_9_partial_features_1( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''
'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String + __renderTopLevelProperty_partial_accessor_setter_9_partial_documentation_2( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context2.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderTopLevelProperty_partial_accessor_setter_9_partial_source_code_3( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context2.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_search_sidebar_10( + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_footer_11( + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} + +String renderTypedef(TypedefTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderTypedef_partial_head_0(context0)); + buffer.write(''' + +
'''); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +
'''); + buffer.write(_renderTypedef_partial_source_link_1(context1, context0)); + buffer.write('''

'''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(''' '''); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(' '); + buffer.write(_renderTypedef_partial_feature_set_2(context1, context0)); + buffer.write(' '); + buffer.write(_renderTypedef_partial_categorization_3(context1, context0)); + buffer.write('''

'''); + } + buffer.write(''' + +
'''); + var context2 = context0.typeDef; + if (context2 != null) { + buffer.write('\n '); + buffer + .write(_renderTypedef_partial_typedef_multiline_4(context2, context0)); + } + buffer.write(''' +
+'''); + var context3 = context0.typeDef; + if (context3 != null) { + buffer.write('\n '); + buffer.write(_renderTypedef_partial_documentation_5(context3, context0)); + buffer.write('\n '); + buffer.write(_renderTypedef_partial_source_code_6(context3, context0)); + } + buffer.write(''' + +
+ + + + + +'''); + buffer.write(_renderTypedef_partial_footer_8(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_head_0(TypedefTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(''' + + + + + '''); + if (context0.includeVersion == true) { + buffer.write(''' + '''); + } + buffer.write(''' + + '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.write(''''''); + var context1 = context0.relCanonicalPrefix; + if (context1 != null) { + buffer.write(''' + '''); + } + buffer.writeln(); + if (context0.useBaseHref == true) { + var context2 = context0.htmlBase; + if (context2 != null) { + buffer.write(''' + + '''); + } + } + buffer.write('\n\n '); + buffer.write(''' + + + + '''); + buffer.write(''' + + + + + '''); + buffer.write(context0.customHeader.toString()); + buffer.write(''' + + +'''); + buffer.write(''' + + +
+ +
+ + +
'''); + buffer.write(htmlEscape.convert(context0.self.name.toString())); + buffer.write('''
+ +
+ +
+'''); + return buffer.toString(); +} + +String _renderTypedef_partial_source_link_1( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' + '''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_feature_set_2( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_categorization_3( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_typedef_multiline_4( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isCallable == true) { + var context2 = context1.asCallable; + if (context2 != null) { + if (context2.hasAnnotations == true) { + buffer.write(''' +
+
    '''); + var context3 = context2.annotations; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +
  1. '''); + buffer.write(context4.linkedNameWithParameters.toString()); + buffer.write('''
  2. '''); + } + } + buffer.write(''' +
+
'''); + } + if (context2.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write(''''''); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write(''' = + '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(''''''); + } + } + if (context1.isCallable != true) { + buffer.write('\n '); + buffer.write( + __renderTypedef_partial_typedef_multiline_4_partial_type_multiline_0( + context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderTypedef_partial_typedef_multiline_4_partial_type_multiline_0( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasAnnotations == true) { + buffer.write(''' +
+
    '''); + var context2 = context1.annotations; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +
  1. '''); + buffer.write(context3.linkedNameWithParameters.toString()); + buffer.write('''
  2. '''); + } + } + buffer.write(''' +
+
'''); + } + buffer.writeln(); + buffer.write( + ___renderTypedef_partial_typedef_multiline_4_partial_type_multiline_0_partial_name_summary_0( + context1, context0)); + buffer.write(context1.genericParameters.toString()); + buffer.write(''' = '''); + buffer.write(context1.modelType.linkedName.toString()); + buffer.write(''' +'''); + return buffer.toString(); +} + +String + ___renderTypedef_partial_typedef_multiline_4_partial_type_multiline_0_partial_name_summary_0( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + buffer.write(''''''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(''''''); + return buffer.toString(); +} + +String _renderTypedef_partial_documentation_5( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.write(''' +
+ '''); + buffer.write(context1.documentationAsHtml.toString()); + buffer.write(''' +
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_source_code_6( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +
+

Implementation

+
''');
+    buffer.write(context1.sourceCode.toString());
+    buffer.write('''
+
'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_search_sidebar_7(TypedefTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + + +'''); + return buffer.toString(); +} + +String _renderTypedef_partial_footer_8(TypedefTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''
+ +
+ + '''); + buffer.write(htmlEscape.convert(context0.defaultPackage.name.toString())); + if (context0.hasFooterVersion == true) { + buffer.write('\n '); + buffer + .write(htmlEscape.convert(context0.defaultPackage.version.toString())); + } + buffer.write(''' + + + '''); + buffer.write(context0.customInnerFooter.toString()); + buffer.write(''' +
+ +'''); + buffer.writeln(); + buffer.write(''' + + + +'''); + buffer.write(context0.customFooter.toString()); + buffer.write(''' + + + + +'''); + return buffer.toString(); +} diff --git a/lib/src/generator/templates.aot_renderers_for_md.dart b/lib/src/generator/templates.aot_renderers_for_md.dart new file mode 100644 index 0000000000..ebc9ce6b70 --- /dev/null +++ b/lib/src/generator/templates.aot_renderers_for_md.dart @@ -0,0 +1,4576 @@ +// GENERATED CODE. DO NOT EDIT. +// +// To change the contents of this library, make changes to the builder source +// files in the tool/mustachio/ directory. + +// Sometimes we enter a new section which triggers creating a new variable, but +// the variable is not used; generally when the section is checking if a +// non-bool, non-Iterable field is non-null. +// ignore_for_file: unused_local_variable + +// It is hard to track exact imports without using package:code_builder. +// ignore_for_file: unused_import + +import 'dart:convert' show htmlEscape; + +import 'package:dartdoc/dartdoc.dart'; +import 'package:dartdoc/src/generator/template_data.dart'; +import 'templates.dart'; + +String renderCategory(CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderCategory_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderCategory_partial_documentation_1(context1, context0)); + buffer.writeln(); + if (context1.hasPublicLibraries == true) { + buffer.write(''' +## Libraries +'''); + var context2 = context1.publicLibrariesSorted; + if (context2 != null) { + for (var context3 in context2) { + buffer.writeln(); + buffer.write( + _renderCategory_partial_library_2(context3, context1, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context1.hasPublicClasses == true) { + buffer.write(''' +## Classes +'''); + var context4 = context1.publicClassesSorted; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write( + _renderCategory_partial_class_3(context5, context1, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context1.hasPublicMixins == true) { + buffer.write(''' +## Mixins +'''); + var context6 = context1.publicMixinsSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.writeln(); + buffer.write( + _renderCategory_partial_mixin_4(context7, context1, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context1.hasPublicConstants == true) { + buffer.write(''' +## Constants +'''); + var context8 = context1.publicConstantsSorted; + if (context8 != null) { + for (var context9 in context8) { + buffer.writeln(); + buffer.write( + _renderCategory_partial_constant_5(context9, context1, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context1.hasPublicProperties == true) { + buffer.write(''' +## Properties +'''); + var context10 = context1.publicPropertiesSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.writeln(); + buffer.write(_renderCategory_partial_property_6( + context11, context1, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context1.hasPublicFunctions == true) { + buffer.write(''' +## Functions +'''); + var context12 = context1.publicFunctionsSorted; + if (context12 != null) { + for (var context13 in context12) { + buffer.writeln(); + buffer.write(_renderCategory_partial_callable_7( + context13, context1, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context1.hasPublicEnums == true) { + buffer.write(''' +## Enums +'''); + var context14 = context1.publicEnumsSorted; + if (context14 != null) { + for (var context15 in context14) { + buffer.writeln(); + buffer.write( + _renderCategory_partial_class_3(context15, context1, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context1.hasPublicTypedefs == true) { + buffer.write(''' +## Typedefs +'''); + var context16 = context1.publicTypedefsSorted; + if (context16 != null) { + for (var context17 in context16) { + buffer.writeln(); + buffer.write( + _renderCategory_partial_typedef_8(context17, context1, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context1.hasPublicExceptions == true) { + buffer.write(''' +## Exceptions / Errors +'''); + var context18 = context1.publicExceptionsSorted; + if (context18 != null) { + for (var context19 in context18) { + buffer.writeln(); + buffer.write( + _renderCategory_partial_class_3(context19, context1, context0)); + buffer.writeln(); + } + } + } + } + buffer.write('\n\n'); + buffer.write(_renderCategory_partial_footer_9(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_head_0(CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_documentation_1( + Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_library_2( + Library context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + if (context2.isDocumented == true) { + buffer.writeln(); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.writeln(); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_class_3( + Class context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.writeln(); + buffer.write(__renderCategory_partial_class_3_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_class_3_partial_categorization_0( + Class context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_mixin_4( + Mixin context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.writeln(); + buffer.write(__renderCategory_partial_mixin_4_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_mixin_4_partial_categorization_0( + Mixin context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_constant_5(TopLevelVariable context2, + Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderCategory_partial_constant_5_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderCategory_partial_constant_5_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_constant_5_partial_categorization_0( + TopLevelVariable context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_constant_5_partial_features_1( + TopLevelVariable context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_property_6(TopLevelVariable context2, + Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(' '); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderCategory_partial_property_6_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderCategory_partial_property_6_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_property_6_partial_categorization_0( + TopLevelVariable context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_property_6_partial_features_1( + TopLevelVariable context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_callable_7(ModelFunctionTyped context2, + Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderCategory_partial_callable_7_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderCategory_partial_callable_7_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_callable_7_partial_categorization_0( + ModelFunctionTyped context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_callable_7_partial_features_1( + ModelFunctionTyped context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_typedef_8( + Typedef context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isCallable == true) { + var context3 = context2.asCallable; + if (context3 != null) { + buffer.write(''' + ##### '''); + buffer.write(context3.linkedName.toString()); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.write(''' = '''); + buffer.write(context3.modelType.linkedName.toString()); + buffer.write('\n '); + buffer.write(__renderCategory_partial_typedef_8_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write('\n\n '); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write(' '); + buffer.write('\n '); + buffer.write(__renderCategory_partial_typedef_8_partial_features_1( + context3, context2, context1, context0)); + } + } + if (context2.isCallable != true) { + buffer.write('\n '); + buffer.write(__renderCategory_partial_typedef_8_partial_type_2( + context2, context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_typedef_8_partial_categorization_0( + FunctionTypedef context3, + Typedef context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_typedef_8_partial_features_1( + FunctionTypedef context3, + Typedef context2, + Category context1, + CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderCategory_partial_typedef_8_partial_type_2( + Typedef context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write(''' = '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write( + ___renderCategory_partial_typedef_8_partial_type_2_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write( + ___renderCategory_partial_typedef_8_partial_type_2_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String + ___renderCategory_partial_typedef_8_partial_type_2_partial_categorization_0( + Typedef context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String ___renderCategory_partial_typedef_8_partial_type_2_partial_features_1( + Typedef context2, Category context1, CategoryTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderCategory_partial_footer_9(CategoryTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderClass(ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderClass_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderClass_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderClass_partial_categorization_2(context1, context0)); + buffer.writeln(); + buffer.write(_renderClass_partial_feature_set_3(context1, context0)); + } + buffer.writeln(); + var context2 = context0.clazz; + if (context2 != null) { + buffer.writeln(); + buffer.write(_renderClass_partial_documentation_4(context2, context0)); + buffer.writeln(); + if (context2.hasModifiers == true) { + if (context2.hasPublicSuperChainReversed == true) { + buffer.write(''' +**Inheritance** + +- '''); + buffer.write(context0.linkedObjectType.toString()); + var context3 = context2.publicSuperChainReversed; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +- '''); + buffer.write(context4.linkedName.toString()); + } + } + buffer.write(''' +- '''); + buffer.write(context2.name.toString()); + } + buffer.writeln(); + if (context2.hasPublicInterfaces == true) { + buffer.write(''' +**Implemented types** +'''); + var context5 = context2.publicInterfaces; + if (context5 != null) { + for (var context6 in context5) { + buffer.write(''' +- '''); + buffer.write(context6.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasPublicMixedInTypes == true) { + buffer.write(''' +**Mixed in types** +'''); + var context7 = context2.publicMixedInTypes; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +- '''); + buffer.write(context8.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasPublicImplementors == true) { + buffer.write(''' +**Implementers** +'''); + var context9 = context2.publicImplementorsSorted; + if (context9 != null) { + for (var context10 in context9) { + buffer.write(''' +- '''); + buffer.write(context10.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasPotentiallyApplicableExtensions == true) { + buffer.write(''' +**Available Extensions** +'''); + var context11 = context2.potentiallyApplicableExtensions; + if (context11 != null) { + for (var context12 in context11) { + buffer.write(''' +- '''); + buffer.write(context12.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasAnnotations == true) { + buffer.write(''' +**Annotations** +'''); + var context13 = context2.annotations; + if (context13 != null) { + for (var context14 in context13) { + buffer.write(''' +- '''); + buffer.write(context14.linkedNameWithParameters.toString()); + } + } + } + } + buffer.writeln(); + if (context2.hasPublicConstructors == true) { + buffer.write(''' +## Constructors +'''); + var context15 = context2.publicConstructorsSorted; + if (context15 != null) { + for (var context16 in context15) { + buffer.writeln(); + buffer.write(context16.linkedName.toString()); + buffer.write(''' ('''); + buffer.write(context16.linkedParams.toString()); + buffer.write(''') + +'''); + buffer.write(context16.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context16.extendedDocLink.toString()); + buffer.write(' '); + if (context16.isConst == true) { + buffer.write('''_const_'''); + } + buffer.write(' '); + if (context16.isFactory == true) { + buffer.write('''_factory_'''); + } + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceFields == true) { + buffer.write(''' +## Properties +'''); + var context17 = context2.publicInstanceFieldsSorted; + if (context17 != null) { + for (var context18 in context17) { + buffer.writeln(); + buffer.write( + _renderClass_partial_property_5(context18, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceMethods == true) { + buffer.write(''' +## Methods +'''); + var context19 = context2.publicInstanceMethodsSorted; + if (context19 != null) { + for (var context20 in context19) { + buffer.writeln(); + buffer.write( + _renderClass_partial_callable_6(context20, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceOperators == true) { + buffer.write(''' +## Operators +'''); + var context21 = context2.publicInstanceOperatorsSorted; + if (context21 != null) { + for (var context22 in context21) { + buffer.writeln(); + buffer.write( + _renderClass_partial_callable_6(context22, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicVariableStaticFields == true) { + buffer.write(''' +## Static Properties +'''); + var context23 = context2.publicVariableStaticFieldsSorted; + if (context23 != null) { + for (var context24 in context23) { + buffer.writeln(); + buffer.write( + _renderClass_partial_property_5(context24, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicStaticMethods == true) { + buffer.write(''' +## Static Methods +'''); + var context25 = context2.publicStaticMethodsSorted; + if (context25 != null) { + for (var context26 in context25) { + buffer.writeln(); + buffer.write( + _renderClass_partial_callable_6(context26, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicConstantFields == true) { + buffer.write(''' +## Constants +'''); + var context27 = context2.publicConstantFieldsSorted; + if (context27 != null) { + for (var context28 in context27) { + buffer.writeln(); + buffer.write( + _renderClass_partial_constant_7(context28, context2, context0)); + buffer.writeln(); + } + } + } + } + buffer.write('\n\n'); + buffer.write(_renderClass_partial_footer_8(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_head_0( + ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_source_link_1( + Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_categorization_2( + Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.writeln(); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_feature_set_3( + Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_documentation_4( + Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_property_5( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(' '); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderClass_partial_property_5_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderClass_partial_property_5_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String + __renderClass_partial_property_5_partial_categorization_0( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderClass_partial_property_5_partial_features_1( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_callable_6( + Method context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderClass_partial_callable_6_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderClass_partial_callable_6_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String + __renderClass_partial_callable_6_partial_categorization_0( + Method context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderClass_partial_callable_6_partial_features_1( + Method context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_constant_7( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderClass_partial_constant_7_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderClass_partial_constant_7_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String + __renderClass_partial_constant_7_partial_categorization_0( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderClass_partial_constant_7_partial_features_1( + Field context2, Class context1, ClassTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderClass_partial_footer_8( + ClassTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderConstructor(ConstructorTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderConstructor_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderConstructor_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderConstructor_partial_feature_set_2(context1, context0)); + } + buffer.writeln(); + var context2 = context0.constructor; + if (context2 != null) { + if (context2.hasAnnotations == true) { + var context3 = context2.annotations; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +- '''); + buffer.write(context4.linkedNameWithParameters.toString()); + } + } + } + buffer.writeln(); + if (context2.isConst == true) { + buffer.write('''const'''); + } + buffer.writeln(); + buffer.write(context2.nameWithGenerics.toString()); + buffer.write('''('''); + if (context2.hasParameters == true) { + buffer.write(context2.linkedParamsLines.toString()); + } + buffer.write(''') + +'''); + buffer + .write(_renderConstructor_partial_documentation_3(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderConstructor_partial_source_code_4(context2, context0)); + buffer.writeln(); + } + buffer.write('\n\n'); + buffer.write(_renderConstructor_partial_footer_5(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_head_0(ConstructorTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_source_link_1( + Constructor context1, ConstructorTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_feature_set_2( + Constructor context1, ConstructorTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_documentation_3( + Constructor context1, ConstructorTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_source_code_4( + Constructor context1, ConstructorTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context1.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderConstructor_partial_footer_5(ConstructorTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderEnum(EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderEnum_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.name.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderEnum_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderEnum_partial_feature_set_2(context1, context0)); + } + buffer.writeln(); + var context2 = context0.eNum; + if (context2 != null) { + buffer.writeln(); + buffer.write(_renderEnum_partial_documentation_3(context2, context0)); + buffer.writeln(); + if (context2.hasModifiers == true) { + if (context2.hasPublicSuperChainReversed == true) { + buffer.write(''' +**Inheritance** + +- '''); + buffer.write(context0.linkedObjectType.toString()); + var context3 = context2.publicSuperChainReversed; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +- '''); + buffer.write(context4.linkedName.toString()); + } + } + buffer.write(''' +- '''); + buffer.write(context2.name.toString()); + } + buffer.writeln(); + if (context2.hasPublicInterfaces == true) { + buffer.write(''' +**Implemented types** +'''); + var context5 = context2.publicInterfaces; + if (context5 != null) { + for (var context6 in context5) { + buffer.write(''' +- '''); + buffer.write(context6.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasPublicMixedInTypes == true) { + buffer.write(''' +**Mixed in types** +'''); + var context7 = context2.publicMixedInTypes; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +- '''); + buffer.write(context8.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasPublicImplementors == true) { + buffer.write(''' +**Implementers** +'''); + var context9 = context2.publicImplementorsSorted; + if (context9 != null) { + for (var context10 in context9) { + buffer.write(''' +- '''); + buffer.write(context10.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasAnnotations == true) { + buffer.write(''' +**Annotations** +'''); + var context11 = context2.annotations; + if (context11 != null) { + for (var context12 in context11) { + buffer.write(''' +- '''); + buffer.write(context12.linkedNameWithParameters.toString()); + } + } + } + } + buffer.writeln(); + if (context2.hasPublicConstantFields == true) { + buffer.write(''' +## Constants +'''); + var context13 = context2.publicConstantFieldsSorted; + if (context13 != null) { + for (var context14 in context13) { + buffer.writeln(); + buffer.write( + _renderEnum_partial_constant_4(context14, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicConstructors == true) { + buffer.write(''' +## Constructors +'''); + var context15 = context2.publicConstructorsSorted; + if (context15 != null) { + for (var context16 in context15) { + buffer.writeln(); + buffer.write(context16.linkedName.toString()); + buffer.write('''('''); + buffer.write(context16.linkedParams.toString()); + buffer.write(''') + +'''); + buffer.write(context16.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context16.extendedDocLink.toString()); + buffer.write(' '); + if (context16.isConst == true) { + buffer.write('''_const_'''); + } + buffer.write(' '); + if (context16.isFactory == true) { + buffer.write('''_factory_'''); + } + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceFields == true) { + buffer.write(''' +## Properties +'''); + var context17 = context2.publicInstanceFieldsSorted; + if (context17 != null) { + for (var context18 in context17) { + buffer.writeln(); + buffer.write( + _renderEnum_partial_property_5(context18, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceMethods == true) { + buffer.write(''' +## Methods +'''); + var context19 = context2.publicInstanceMethodsSorted; + if (context19 != null) { + for (var context20 in context19) { + buffer.writeln(); + buffer.write( + _renderEnum_partial_callable_6(context20, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceOperators == true) { + buffer.write(''' +## Operators +'''); + var context21 = context2.publicInstanceOperatorsSorted; + if (context21 != null) { + for (var context22 in context21) { + buffer.writeln(); + buffer.write( + _renderEnum_partial_callable_6(context22, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicVariableStaticFields == true) { + buffer.write(''' +## Static Properties +'''); + var context23 = context2.publicVariableStaticFieldsSorted; + if (context23 != null) { + for (var context24 in context23) { + buffer.writeln(); + buffer.write( + _renderEnum_partial_property_5(context24, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicStaticMethods == true) { + buffer.write(''' +## Static Methods +'''); + var context25 = context2.publicStaticMethodsSorted; + if (context25 != null) { + for (var context26 in context25) { + buffer.writeln(); + buffer.write( + _renderEnum_partial_callable_6(context26, context2, context0)); + buffer.writeln(); + } + } + } + } + buffer.write('\n\n'); + buffer.write(_renderEnum_partial_footer_7(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_head_0(EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_source_link_1( + Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_feature_set_2( + Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_documentation_3( + Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_constant_4( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderEnum_partial_constant_4_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderEnum_partial_constant_4_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_constant_4_partial_categorization_0( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_constant_4_partial_features_1( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_property_5( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(' '); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderEnum_partial_property_5_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderEnum_partial_property_5_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_property_5_partial_categorization_0( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_property_5_partial_features_1( + Field context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_callable_6( + Method context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderEnum_partial_callable_6_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderEnum_partial_callable_6_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_callable_6_partial_categorization_0( + Method context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderEnum_partial_callable_6_partial_features_1( + Method context2, Enum context1, EnumTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderEnum_partial_footer_7(EnumTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderError(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''# 404 + +Oops, something\'s gone wrong :-( + +You\'ve tried to visit a page that doesn\'t exist. Luckily this site has other +[pages](index.md). +'''); + return buffer.toString(); +} + +String renderExtension(ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderExtension_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write(''' +on '''); + var context2 = context1.extendedType; + if (context2 != null) { + buffer.write(context2.linkedName.toString()); + } + buffer.write('\n\n'); + buffer.write(_renderExtension_partial_source_link_1(context1, context0)); + buffer.write('\n\n'); + buffer.write(_renderExtension_partial_categorization_2(context1, context0)); + buffer.writeln(); + buffer.write(_renderExtension_partial_feature_set_3(context1, context0)); + } + buffer.writeln(); + var context3 = context0.extension; + if (context3 != null) { + buffer.writeln(); + buffer.write(_renderExtension_partial_documentation_4(context3, context0)); + buffer.writeln(); + if (context3.hasPublicInstanceFields == true) { + buffer.write(''' +## Properties +'''); + var context4 = context3.publicInstanceFieldsSorted; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(_renderExtension_partial_property_5( + context5, context3, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context3.hasPublicInstanceMethods == true) { + buffer.write(''' +## Methods +'''); + var context6 = context3.publicInstanceMethodsSorted; + if (context6 != null) { + for (var context7 in context6) { + buffer.writeln(); + buffer.write(_renderExtension_partial_callable_6( + context7, context3, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context3.hasPublicInstanceOperators == true) { + buffer.write(''' +## Operators +'''); + var context8 = context3.publicInstanceOperatorsSorted; + if (context8 != null) { + for (var context9 in context8) { + buffer.writeln(); + buffer.write(_renderExtension_partial_callable_6( + context9, context3, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context3.hasPublicVariableStaticFields == true) { + buffer.write(''' +## Static Properties +'''); + var context10 = context3.publicVariableStaticFieldsSorted; + if (context10 != null) { + for (var context11 in context10) { + buffer.writeln(); + buffer.write(_renderExtension_partial_property_5( + context11, context3, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context3.hasPublicStaticMethods == true) { + buffer.write(''' +## Static Methods +'''); + var context12 = context3.publicStaticMethodsSorted; + if (context12 != null) { + for (var context13 in context12) { + buffer.writeln(); + buffer.write(_renderExtension_partial_callable_6( + context13, context3, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context3.hasPublicConstantFields == true) { + buffer.write(''' +## Constants +'''); + var context14 = context3.publicConstantFieldsSorted; + if (context14 != null) { + for (var context15 in context14) { + buffer.writeln(); + buffer.write(_renderExtension_partial_constant_7( + context15, context3, context0)); + buffer.writeln(); + } + } + } + } + buffer.write('\n\n'); + buffer.write(_renderExtension_partial_footer_8(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_head_0( + ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_source_link_1( + Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_categorization_2( + Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.writeln(); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_feature_set_3( + Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_documentation_4( + Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_property_5( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(' '); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderExtension_partial_property_5_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderExtension_partial_property_5_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_property_5_partial_categorization_0< + T extends Extension>( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_property_5_partial_features_1< + T extends Extension>( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_callable_6( + Method context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderExtension_partial_callable_6_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderExtension_partial_callable_6_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_callable_6_partial_categorization_0< + T extends Extension>( + Method context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_callable_6_partial_features_1< + T extends Extension>( + Method context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_constant_7( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderExtension_partial_constant_7_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderExtension_partial_constant_7_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_constant_7_partial_categorization_0< + T extends Extension>( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderExtension_partial_constant_7_partial_features_1< + T extends Extension>( + Field context2, Extension context1, ExtensionTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderExtension_partial_footer_8( + ExtensionTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderFunction(FunctionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderFunction_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderFunction_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderFunction_partial_categorization_2(context1, context0)); + buffer.writeln(); + buffer.write(_renderFunction_partial_feature_set_3(context1, context0)); + } + buffer.writeln(); + var context2 = context0.function; + if (context2 != null) { + buffer.writeln(); + buffer.write( + _renderFunction_partial_callable_multiline_4(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderFunction_partial_documentation_5(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderFunction_partial_source_code_6(context2, context0)); + buffer.writeln(); + } + buffer.write('\n\n'); + buffer.write(_renderFunction_partial_footer_7(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_head_0(FunctionTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_source_link_1( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_categorization_2( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.writeln(); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_feature_set_3( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_callable_multiline_4( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasAnnotations == true) { + var context2 = context1.annotations; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +- '''); + buffer.write(context3.linkedNameWithParameters.toString()); + } + } + } + buffer.write('\n\n'); + buffer.write(context1.modelType.returnType.linkedName.toString()); + buffer.write(' '); + buffer.write( + __renderFunction_partial_callable_multiline_4_partial_name_summary_0( + context1, context0)); + buffer.write(context1.genericParameters.toString()); + buffer.write('''('''); + if (context1.hasParameters == true) { + buffer.write(context1.linkedParamsLines.toString()); + } + buffer.write(''') +'''); + return buffer.toString(); +} + +String __renderFunction_partial_callable_multiline_4_partial_name_summary_0( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context1.name.toString())); + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_documentation_5( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_source_code_6( + ModelFunction context1, FunctionTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context1.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderFunction_partial_footer_7(FunctionTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderIndex(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderIndex_partial_head_0(context0)); + buffer.write(''' + +# '''); + buffer.write(htmlEscape.convert(context0.title.toString())); + buffer.writeln(); + var context1 = context0.defaultPackage; + if (context1 != null) { + buffer.writeln(); + buffer.write(_renderIndex_partial_documentation_1(context1, context0)); + } + buffer.writeln(); + var context2 = context0.localPackages; + if (context2 != null) { + for (var context3 in context2) { + if (context3.isFirstPackage == true) { + buffer.write(''' +## Libraries'''); + } + if (context3.isFirstPackage != true) { + buffer.write(''' +## '''); + buffer.write(htmlEscape.convert(context3.name.toString())); + } + buffer.writeln(); + var context4 = context3.defaultCategory; + if (context4 != null) { + var context5 = context4.publicLibrariesSorted; + if (context5 != null) { + for (var context6 in context5) { + buffer.writeln(); + buffer.write(_renderIndex_partial_library_2( + context6, context4, context3, context0)); + } + } + } + buffer.writeln(); + var context7 = context3.categoriesWithPublicLibraries; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +### Category '''); + buffer.write(context8.categoryLabel.toString()); + buffer.writeln(); + var context9 = context8.publicLibrariesSorted; + if (context9 != null) { + for (var context10 in context9) { + buffer.writeln(); + buffer.write(_renderIndex_partial_library_2( + context10, context8, context3, context0)); + } + } + } + } + } + } + buffer.write('\n\n'); + buffer.write(_renderIndex_partial_footer_3(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderIndex_partial_head_0(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderIndex_partial_documentation_1( + Package context1, PackageTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderIndex_partial_library_2(Library context3, + LibraryContainer context2, Package context1, PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context3.linkedName.toString()); + if (context3.isDocumented == true) { + buffer.writeln(); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.writeln(); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderIndex_partial_footer_3(PackageTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderLibrary(LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderLibrary_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.name.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderLibrary_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderLibrary_partial_categorization_2(context1, context0)); + buffer.writeln(); + buffer.write(_renderLibrary_partial_feature_set_3(context1, context0)); + } + buffer.writeln(); + var context2 = context0.library; + if (context2 != null) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_documentation_4(context2, context0)); + } + buffer.writeln(); + var context3 = context0.library; + if (context3 != null) { + if (context3.hasPublicClasses == true) { + buffer.write(''' +## Classes +'''); + var context4 = context3.library; + if (context4 != null) { + var context5 = context4.publicClassesSorted; + if (context5 != null) { + for (var context6 in context5) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_class_5( + context6, context4, context3, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.writeln(); + var context7 = context0.library; + if (context7 != null) { + if (context7.hasPublicMixins == true) { + buffer.write(''' +## Mixins +'''); + var context8 = context7.library; + if (context8 != null) { + var context9 = context8.publicMixinsSorted; + if (context9 != null) { + for (var context10 in context9) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_mixin_6( + context10, context8, context7, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.writeln(); + var context11 = context0.library; + if (context11 != null) { + if (context11.hasPublicExtensions == true) { + buffer.write(''' +## Extensions +'''); + var context12 = context11.library; + if (context12 != null) { + var context13 = context12.publicExtensionsSorted; + if (context13 != null) { + for (var context14 in context13) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_extension_7( + context14, context12, context11, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.writeln(); + var context15 = context0.library; + if (context15 != null) { + if (context15.hasPublicConstants == true) { + buffer.write(''' +## Constants +'''); + var context16 = context15.library; + if (context16 != null) { + var context17 = context16.publicConstantsSorted; + if (context17 != null) { + for (var context18 in context17) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_constant_8( + context18, context16, context15, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.writeln(); + var context19 = context0.library; + if (context19 != null) { + if (context19.hasPublicProperties == true) { + buffer.write(''' +## Properties +'''); + var context20 = context19.library; + if (context20 != null) { + var context21 = context20.publicPropertiesSorted; + if (context21 != null) { + for (var context22 in context21) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_property_9( + context22, context20, context19, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.writeln(); + var context23 = context0.library; + if (context23 != null) { + if (context23.hasPublicFunctions == true) { + buffer.write(''' +## Functions +'''); + var context24 = context23.library; + if (context24 != null) { + var context25 = context24.publicFunctionsSorted; + if (context25 != null) { + for (var context26 in context25) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_callable_10( + context26, context24, context23, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.writeln(); + var context27 = context0.library; + if (context27 != null) { + if (context27.hasPublicEnums == true) { + buffer.write(''' +## Enums +'''); + var context28 = context27.library; + if (context28 != null) { + var context29 = context28.publicEnumsSorted; + if (context29 != null) { + for (var context30 in context29) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_class_5( + context30, context28, context27, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.writeln(); + var context31 = context0.library; + if (context31 != null) { + if (context31.hasPublicTypedefs == true) { + buffer.write(''' +## Typedefs +'''); + var context32 = context31.library; + if (context32 != null) { + var context33 = context32.publicTypedefsSorted; + if (context33 != null) { + for (var context34 in context33) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_typedef_11( + context34, context32, context31, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.writeln(); + var context35 = context0.library; + if (context35 != null) { + if (context35.hasPublicExceptions == true) { + buffer.write(''' +## Exceptions / Errors +'''); + var context36 = context35.library; + if (context36 != null) { + var context37 = context36.publicExceptionsSorted; + if (context37 != null) { + for (var context38 in context37) { + buffer.writeln(); + buffer.write(_renderLibrary_partial_class_5( + context38, context36, context35, context0)); + buffer.writeln(); + } + } + } + } + } + buffer.write('\n\n'); + buffer.write(_renderLibrary_partial_footer_12(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_head_0(LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_source_link_1( + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_categorization_2( + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.writeln(); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_feature_set_3( + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_documentation_4( + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_class_5(Class context3, Library context2, + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context3.linkedName.toString()); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.writeln(); + buffer.write(__renderLibrary_partial_class_5_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_class_5_partial_categorization_0(Class context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_mixin_6(Mixin context3, Library context2, + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context3.linkedName.toString()); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.writeln(); + buffer.write(__renderLibrary_partial_mixin_6_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_mixin_6_partial_categorization_0(Mixin context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_extension_7(Extension context3, Library context2, + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context3.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderLibrary_partial_extension_7_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_extension_7_partial_categorization_0( + Extension context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_constant_8(TopLevelVariable context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context3.linkedName.toString()); + buffer.write(''' const '''); + buffer.write(context3.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderLibrary_partial_constant_8_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderLibrary_partial_constant_8_partial_features_1( + context3, context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_constant_8_partial_categorization_0( + TopLevelVariable context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_constant_8_partial_features_1( + TopLevelVariable context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_property_9(TopLevelVariable context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context3.linkedName.toString()); + buffer.write(' '); + buffer.write(context3.arrow.toString()); + buffer.write(' '); + buffer.write(context3.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderLibrary_partial_property_9_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderLibrary_partial_property_9_partial_features_1( + context3, context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_property_9_partial_categorization_0( + TopLevelVariable context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_property_9_partial_features_1( + TopLevelVariable context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_callable_10(ModelFunctionTyped context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context3.linkedName.toString()); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context3.linkedParamsNoMetadata.toString()); + buffer.write(''') '''); + buffer.write(context3.modelType.returnType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderLibrary_partial_callable_10_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderLibrary_partial_callable_10_partial_features_1( + context3, context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_callable_10_partial_categorization_0( + ModelFunctionTyped context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_callable_10_partial_features_1( + ModelFunctionTyped context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_typedef_11(Typedef context3, Library context2, + Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.isCallable == true) { + var context4 = context3.asCallable; + if (context4 != null) { + buffer.write(''' + ##### '''); + buffer.write(context4.linkedName.toString()); + buffer.write(context4.linkedGenericParameters.toString()); + buffer.write(''' = '''); + buffer.write(context4.modelType.linkedName.toString()); + buffer.write('\n '); + buffer.write(__renderLibrary_partial_typedef_11_partial_categorization_0( + context4, context3, context2, context1, context0)); + buffer.write('\n\n '); + buffer.write(context4.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context4.extendedDocLink.toString()); + buffer.write(' '); + buffer.write('\n '); + buffer.write(__renderLibrary_partial_typedef_11_partial_features_1( + context4, context3, context2, context1, context0)); + } + } + if (context3.isCallable != true) { + buffer.write('\n '); + buffer.write(__renderLibrary_partial_typedef_11_partial_type_2( + context3, context2, context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_typedef_11_partial_categorization_0( + FunctionTypedef context4, + Typedef context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context4.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context5 = context4.displayedCategories; + if (context5 != null) { + for (var context6 in context5) { + buffer.writeln(); + buffer.write(context6.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_typedef_11_partial_features_1( + FunctionTypedef context4, + Typedef context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context4.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context4.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderLibrary_partial_typedef_11_partial_type_2(Typedef context3, + Library context2, Library context1, LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context3.linkedName.toString()); + buffer.write(context3.linkedGenericParameters.toString()); + buffer.write(''' = '''); + buffer.write(context3.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write( + ___renderLibrary_partial_typedef_11_partial_type_2_partial_categorization_0( + context3, context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context3.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context3.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write( + ___renderLibrary_partial_typedef_11_partial_type_2_partial_features_1( + context3, context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String + ___renderLibrary_partial_typedef_11_partial_type_2_partial_categorization_0( + Typedef context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context4 = context3.displayedCategories; + if (context4 != null) { + for (var context5 in context4) { + buffer.writeln(); + buffer.write(context5.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String ___renderLibrary_partial_typedef_11_partial_type_2_partial_features_1( + Typedef context3, + Library context2, + Library context1, + LibraryTemplateData context0) { + final buffer = StringBuffer(); + if (context3.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context3.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderLibrary_partial_footer_12(LibraryTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderMethod(MethodTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderMethod_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderMethod_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderMethod_partial_feature_set_2(context1, context0)); + } + buffer.writeln(); + var context2 = context0.method; + if (context2 != null) { + buffer.writeln(); + buffer + .write(_renderMethod_partial_callable_multiline_3(context2, context0)); + buffer.writeln(); + buffer.write(_renderMethod_partial_features_4(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderMethod_partial_documentation_5(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderMethod_partial_source_code_6(context2, context0)); + buffer.writeln(); + } + buffer.write('\n\n'); + buffer.write(_renderMethod_partial_footer_7(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_head_0(MethodTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_source_link_1( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_feature_set_2( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_callable_multiline_3( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasAnnotations == true) { + var context2 = context1.annotations; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +- '''); + buffer.write(context3.linkedNameWithParameters.toString()); + } + } + } + buffer.write('\n\n'); + buffer.write(context1.modelType.returnType.linkedName.toString()); + buffer.write(' '); + buffer.write( + __renderMethod_partial_callable_multiline_3_partial_name_summary_0( + context1, context0)); + buffer.write(context1.genericParameters.toString()); + buffer.write('''('''); + if (context1.hasParameters == true) { + buffer.write(context1.linkedParamsLines.toString()); + } + buffer.write(''') +'''); + return buffer.toString(); +} + +String __renderMethod_partial_callable_multiline_3_partial_name_summary_0( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context1.name.toString())); + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_features_4( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context1.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_documentation_5( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_source_code_6( + Method context1, MethodTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context1.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMethod_partial_footer_7(MethodTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderMixin(MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderMixin_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderMixin_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderMixin_partial_categorization_2(context1, context0)); + buffer.writeln(); + buffer.write(_renderMixin_partial_feature_set_3(context1, context0)); + } + buffer.writeln(); + var context2 = context0.mixin; + if (context2 != null) { + buffer.writeln(); + buffer.write(_renderMixin_partial_documentation_4(context2, context0)); + buffer.writeln(); + if (context2.hasModifiers == true) { + if (context2.hasPublicSuperclassConstraints == true) { + buffer.write(''' +**Superclass Constraints** +'''); + var context3 = context2.publicSuperclassConstraints; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' +- '''); + buffer.write(context4.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasPublicSuperChainReversed == true) { + buffer.write(''' +**Inheritance** + +- '''); + buffer.write(context0.linkedObjectType.toString()); + var context5 = context2.publicSuperChainReversed; + if (context5 != null) { + for (var context6 in context5) { + buffer.write(''' +- '''); + buffer.write(context6.linkedName.toString()); + } + } + buffer.write(''' +- '''); + buffer.write(context2.name.toString()); + } + buffer.writeln(); + if (context2.hasPublicInterfaces == true) { + buffer.write(''' +**Implemented types** +'''); + var context7 = context2.publicInterfaces; + if (context7 != null) { + for (var context8 in context7) { + buffer.write(''' +- '''); + buffer.write(context8.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasPublicMixedInTypes == true) { + buffer.write(''' +**Mixed in types** +'''); + var context9 = context2.publicMixedInTypes; + if (context9 != null) { + for (var context10 in context9) { + buffer.write(''' +- '''); + buffer.write(context10.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasPublicImplementors == true) { + buffer.write(''' +**Implementers** +'''); + var context11 = context2.publicImplementorsSorted; + if (context11 != null) { + for (var context12 in context11) { + buffer.write(''' +- '''); + buffer.write(context12.linkedName.toString()); + } + } + } + buffer.writeln(); + if (context2.hasAnnotations == true) { + buffer.write(''' +**Annotations** +'''); + var context13 = context2.annotations; + if (context13 != null) { + for (var context14 in context13) { + buffer.write(''' +- '''); + buffer.write(context14.linkedNameWithParameters.toString()); + } + } + } + } + buffer.writeln(); + if (context2.hasPublicConstructors == true) { + buffer.write(''' +## Constructors +'''); + var context15 = context2.publicConstructorsSorted; + if (context15 != null) { + for (var context16 in context15) { + buffer.writeln(); + buffer.write(context16.linkedName.toString()); + buffer.write('''('''); + buffer.write(context16.linkedParams.toString()); + buffer.write(''') + +'''); + buffer.write(context16.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context16.extendedDocLink.toString()); + buffer.write(' '); + if (context16.isConst == true) { + buffer.write('''_const_'''); + } + buffer.write(' '); + if (context16.isFactory == true) { + buffer.write('''_factory_'''); + } + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceFields == true) { + buffer.write(''' +## Properties +'''); + var context17 = context2.publicInstanceFieldsSorted; + if (context17 != null) { + for (var context18 in context17) { + buffer.writeln(); + buffer.write( + _renderMixin_partial_property_5(context18, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceMethods == true) { + buffer.write(''' +## Methods +'''); + var context19 = context2.publicInstanceMethodsSorted; + if (context19 != null) { + for (var context20 in context19) { + buffer.writeln(); + buffer.write( + _renderMixin_partial_callable_6(context20, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicInstanceOperators == true) { + buffer.write(''' +## Operators +'''); + var context21 = context2.publicInstanceOperatorsSorted; + if (context21 != null) { + for (var context22 in context21) { + buffer.writeln(); + buffer.write( + _renderMixin_partial_callable_6(context22, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicVariableStaticFields == true) { + buffer.write(''' +## Static Properties +'''); + var context23 = context2.publicVariableStaticFieldsSorted; + if (context23 != null) { + for (var context24 in context23) { + buffer.writeln(); + buffer.write( + _renderMixin_partial_property_5(context24, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicStaticMethods == true) { + buffer.write(''' +## Static Methods +'''); + var context25 = context2.publicStaticMethodsSorted; + if (context25 != null) { + for (var context26 in context25) { + buffer.writeln(); + buffer.write( + _renderMixin_partial_callable_6(context26, context2, context0)); + buffer.writeln(); + } + } + } + buffer.writeln(); + if (context2.hasPublicConstantFields == true) { + buffer.write(''' +## Constants +'''); + var context27 = context2.publicConstantFieldsSorted; + if (context27 != null) { + for (var context28 in context27) { + buffer.writeln(); + buffer.write( + _renderMixin_partial_constant_7(context28, context2, context0)); + buffer.writeln(); + } + } + } + } + buffer.write('\n\n'); + buffer.write(_renderMixin_partial_footer_8(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_head_0(MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_source_link_1( + Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_categorization_2( + Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.writeln(); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_feature_set_3( + Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_documentation_4( + Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_property_5( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(' '); + buffer.write(context2.arrow.toString()); + buffer.write(' '); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderMixin_partial_property_5_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderMixin_partial_property_5_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_property_5_partial_categorization_0( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_property_5_partial_features_1( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_callable_6( + Method context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') '''); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderMixin_partial_callable_6_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderMixin_partial_callable_6_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_callable_6_partial_categorization_0( + Method context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_callable_6_partial_features_1( + Method context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_constant_7( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.write('''##### '''); + buffer.write(context2.linkedName.toString()); + buffer.write(''' const '''); + buffer.write(context2.modelType.linkedName.toString()); + buffer.writeln(); + buffer.write(__renderMixin_partial_constant_7_partial_categorization_0( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write(context2.oneLineDoc.toString()); + buffer.write(' '); + buffer.write(context2.extendedDocLink.toString()); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderMixin_partial_constant_7_partial_features_1( + context2, context1, context0)); + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_constant_7_partial_categorization_0( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context3 = context2.displayedCategories; + if (context3 != null) { + for (var context4 in context3) { + buffer.writeln(); + buffer.write(context4.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderMixin_partial_constant_7_partial_features_1( + Field context2, Mixin context1, MixinTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderMixin_partial_footer_8(MixinTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderProperty(PropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderProperty_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(htmlEscape.convert(context1.name.toString())); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderProperty_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderProperty_partial_feature_set_2(context1, context0)); + } + buffer.writeln(); + var context2 = context0.self; + if (context2 != null) { + if (context2.hasNoGetterSetter == true) { + buffer.writeln(); + buffer.write(context2.modelType.linkedName.toString()); + buffer.write(' '); + buffer.write(_renderProperty_partial_name_summary_3(context2, context0)); + buffer.write(' '); + buffer.writeln(); + buffer.write(_renderProperty_partial_features_4(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderProperty_partial_documentation_5(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderProperty_partial_source_code_6(context2, context0)); + } + buffer.writeln(); + if (context2.hasGetterOrSetter == true) { + if (context2.hasGetter == true) { + buffer.writeln(); + buffer.write( + _renderProperty_partial_accessor_getter_7(context2, context0)); + } + buffer.writeln(); + if (context2.hasSetter == true) { + buffer.writeln(); + buffer.write( + _renderProperty_partial_accessor_setter_8(context2, context0)); + } + } + } + buffer.write('\n\n'); + buffer.write(_renderProperty_partial_footer_9(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_head_0(PropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_source_link_1( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_feature_set_2( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_name_summary_3( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context1.name.toString())); + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_features_4( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context1.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_documentation_5( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_source_code_6( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context1.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_accessor_getter_7( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + var context2 = context1.getter; + if (context2 != null) { + buffer.writeln(); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(' '); + buffer.write( + __renderProperty_partial_accessor_getter_7_partial_name_summary_0( + context2, context1, context0)); + buffer.write(' '); + buffer.writeln(); + buffer.write(__renderProperty_partial_accessor_getter_7_partial_features_1( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write( + __renderProperty_partial_accessor_getter_7_partial_documentation_2( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write( + __renderProperty_partial_accessor_getter_7_partial_source_code_3( + context2, context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_getter_7_partial_name_summary_0( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isConst == true) { + buffer.write('''const '''); + } + if (context2.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context2.name.toString())); + if (context2.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_getter_7_partial_features_1( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_getter_7_partial_documentation_2( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context2.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_getter_7_partial_source_code_3( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context2.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_accessor_setter_8( + Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + var context2 = context1.setter; + if (context2 != null) { + buffer.writeln(); + buffer.write( + __renderProperty_partial_accessor_setter_8_partial_name_summary_0( + context2, context1, context0)); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') '''); + buffer.writeln(); + buffer.write(__renderProperty_partial_accessor_setter_8_partial_features_1( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write( + __renderProperty_partial_accessor_setter_8_partial_documentation_2( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write( + __renderProperty_partial_accessor_setter_8_partial_source_code_3( + context2, context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_setter_8_partial_name_summary_0( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isConst == true) { + buffer.write('''const '''); + } + if (context2.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context2.name.toString())); + if (context2.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_setter_8_partial_features_1( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_setter_8_partial_documentation_2( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context2.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderProperty_partial_accessor_setter_8_partial_source_code_3( + ContainerAccessor context2, Field context1, PropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context2.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderProperty_partial_footer_9(PropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderSidebarForContainer( + TemplateDataWithContainer context0) { + final buffer = StringBuffer(); + return buffer.toString(); +} + +String renderSidebarForLibrary( + TemplateDataWithLibrary context0) { + final buffer = StringBuffer(); + return buffer.toString(); +} + +String renderTopLevelProperty(TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderTopLevelProperty_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.name.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write( + _renderTopLevelProperty_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write( + _renderTopLevelProperty_partial_categorization_2(context1, context0)); + buffer.writeln(); + buffer.write( + _renderTopLevelProperty_partial_feature_set_3(context1, context0)); + buffer.writeln(); + if (context1.hasNoGetterSetter == true) { + buffer.writeln(); + buffer.write(context1.modelType.linkedName.toString()); + buffer.write(' '); + buffer.write( + _renderTopLevelProperty_partial_name_summary_4(context1, context0)); + buffer.write(' '); + buffer.writeln(); + buffer.write( + _renderTopLevelProperty_partial_features_5(context1, context0)); + buffer.write('\n\n'); + buffer.write( + _renderTopLevelProperty_partial_documentation_6(context1, context0)); + buffer.write('\n\n'); + buffer.write( + _renderTopLevelProperty_partial_source_code_7(context1, context0)); + } + buffer.writeln(); + if (context1.hasExplicitGetter == true) { + buffer.writeln(); + buffer.write(_renderTopLevelProperty_partial_accessor_getter_8( + context1, context0)); + } + buffer.writeln(); + if (context1.hasExplicitSetter == true) { + buffer.writeln(); + buffer.write(_renderTopLevelProperty_partial_accessor_setter_9( + context1, context0)); + } + } + buffer.write('\n\n'); + buffer.write(_renderTopLevelProperty_partial_footer_10(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_head_0( + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_source_link_1( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_categorization_2( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.writeln(); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_feature_set_3( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_name_summary_4( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context1.name.toString())); + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_features_5( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context1.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_documentation_6( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_source_code_7( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context1.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_accessor_getter_8( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + var context2 = context1.getter; + if (context2 != null) { + buffer.writeln(); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(' '); + buffer.write( + __renderTopLevelProperty_partial_accessor_getter_8_partial_name_summary_0( + context2, context1, context0)); + buffer.write(' '); + buffer.writeln(); + buffer.write( + __renderTopLevelProperty_partial_accessor_getter_8_partial_features_1( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write( + __renderTopLevelProperty_partial_accessor_getter_8_partial_documentation_2( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write( + __renderTopLevelProperty_partial_accessor_getter_8_partial_source_code_3( + context2, context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String + __renderTopLevelProperty_partial_accessor_getter_8_partial_name_summary_0( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isConst == true) { + buffer.write('''const '''); + } + if (context2.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context2.name.toString())); + if (context2.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderTopLevelProperty_partial_accessor_getter_8_partial_features_1( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String + __renderTopLevelProperty_partial_accessor_getter_8_partial_documentation_2( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context2.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderTopLevelProperty_partial_accessor_getter_8_partial_source_code_3( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context2.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_accessor_setter_9( + TopLevelVariable context1, TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + var context2 = context1.setter; + if (context2 != null) { + buffer.writeln(); + buffer.write( + __renderTopLevelProperty_partial_accessor_setter_9_partial_name_summary_0( + context2, context1, context0)); + buffer.write('''('''); + buffer.write(context2.linkedParamsNoMetadata.toString()); + buffer.write(''') '''); + buffer.writeln(); + buffer.write( + __renderTopLevelProperty_partial_accessor_setter_9_partial_features_1( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write( + __renderTopLevelProperty_partial_accessor_setter_9_partial_documentation_2( + context2, context1, context0)); + buffer.write('\n\n'); + buffer.write( + __renderTopLevelProperty_partial_accessor_setter_9_partial_source_code_3( + context2, context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String + __renderTopLevelProperty_partial_accessor_setter_9_partial_name_summary_0( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.isConst == true) { + buffer.write('''const '''); + } + if (context2.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context2.name.toString())); + if (context2.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderTopLevelProperty_partial_accessor_setter_9_partial_features_1( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasFeatures == true) { + buffer.write('''_'''); + buffer.write(context2.featuresAsString.toString()); + buffer.write('''_'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String + __renderTopLevelProperty_partial_accessor_setter_9_partial_documentation_2( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context2.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderTopLevelProperty_partial_accessor_setter_9_partial_source_code_3( + Accessor context2, + TopLevelVariable context1, + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + if (context2.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context2.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTopLevelProperty_partial_footer_10( + TopLevelPropertyTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String renderTypedef(TypedefTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(_renderTypedef_partial_head_0(context0)); + buffer.writeln(); + var context1 = context0.self; + if (context1 != null) { + buffer.write(''' +# '''); + buffer.write(context1.nameWithGenerics.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context1.kind.toString())); + buffer.write('\n\n'); + buffer.write(_renderTypedef_partial_source_link_1(context1, context0)); + buffer.writeln(); + buffer.write(_renderTypedef_partial_categorization_2(context1, context0)); + buffer.writeln(); + buffer.write(_renderTypedef_partial_feature_set_3(context1, context0)); + } + buffer.writeln(); + var context2 = context0.typeDef; + if (context2 != null) { + buffer.writeln(); + buffer + .write(_renderTypedef_partial_typedef_multiline_4(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderTypedef_partial_documentation_5(context2, context0)); + buffer.write('\n\n'); + buffer.write(_renderTypedef_partial_source_code_6(context2, context0)); + } + buffer.write('\n\n'); + buffer.write(_renderTypedef_partial_footer_7(context0)); + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_head_0(TypedefTemplateData context0) { + final buffer = StringBuffer(); + buffer.write(context0.customHeader.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_source_link_1( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceHref == true) { + buffer.write(''' +[view source]('''); + buffer.write(context1.sourceHref.toString()); + buffer.write(''')'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_categorization_2( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasCategoryNames == true) { + buffer.write(''' +Categories:'''); + var context2 = context1.displayedCategories; + if (context2 != null) { + for (var context3 in context2) { + buffer.writeln(); + buffer.write(context3.categoryLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_feature_set_3( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasFeatureSet == true) { + var context2 = context1.displayedLanguageFeatures; + if (context2 != null) { + for (var context3 in context2) { + buffer.write('\n '); + buffer.write(context3.featureLabel.toString()); + } + } + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_typedef_multiline_4( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isCallable == true) { + var context2 = context1.asCallable; + if (context2 != null) { + if (context2.hasAnnotations == true) { + var context3 = context2.annotations; + if (context3 != null) { + for (var context4 in context3) { + buffer.write(''' + - '''); + buffer.write(context4.linkedNameWithParameters.toString()); + } + } + } + buffer.write('\n\n '); + buffer.write(context2.modelType.returnType.linkedName.toString()); + buffer.write(' '); + buffer.write(htmlEscape.convert(context2.name.toString())); + buffer.write(context2.linkedGenericParameters.toString()); + buffer.write(''' = '''); + buffer.write(context2.modelType.linkedName.toString()); + } + } + if (context1.isCallable != true) { + buffer.write('\n '); + buffer.write( + __renderTypedef_partial_typedef_multiline_4_partial_type_multiline_0( + context1, context0)); + } + buffer.writeln(); + return buffer.toString(); +} + +String __renderTypedef_partial_typedef_multiline_4_partial_type_multiline_0( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasAnnotations == true) { + var context2 = context1.annotations; + if (context2 != null) { + for (var context3 in context2) { + buffer.write(''' +- '''); + buffer.write(context3.linkedNameWithParameters.toString()); + } + } + } + buffer.write('\n\n'); + buffer.write( + ___renderTypedef_partial_typedef_multiline_4_partial_type_multiline_0_partial_name_summary_0( + context1, context0)); + buffer.write(context1.genericParameters.toString()); + buffer.write(''' = '''); + buffer.write(context1.modelType.linkedName.toString()); + buffer.writeln(); + return buffer.toString(); +} + +String + ___renderTypedef_partial_typedef_multiline_4_partial_type_multiline_0_partial_name_summary_0( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.isConst == true) { + buffer.write('''const '''); + } + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.write(htmlEscape.convert(context1.name.toString())); + if (context1.isDeprecated == true) { + buffer.write('''~~'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_documentation_5( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasDocumentation == true) { + buffer.writeln(); + buffer.write(context1.documentationAsHtml.toString()); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_source_code_6( + Typedef context1, TypedefTemplateData context0) { + final buffer = StringBuffer(); + if (context1.hasSourceCode == true) { + buffer.write(''' +## Implementation + +```dart +'''); + buffer.write(context1.sourceCode.toString()); + buffer.write(''' +```'''); + } + buffer.writeln(); + return buffer.toString(); +} + +String _renderTypedef_partial_footer_7(TypedefTemplateData context0) { + final buffer = StringBuffer(); + buffer.writeln(); + buffer.write(context0.customInnerFooter.toString()); + buffer.writeln(); + buffer.write(context0.customFooter.toString()); + buffer.writeln(); + return buffer.toString(); +} diff --git a/lib/src/generator/templates.dart b/lib/src/generator/templates.dart index 510bb2da30..e50ba5eaa1 100644 --- a/lib/src/generator/templates.dart +++ b/lib/src/generator/templates.dart @@ -2,25 +2,28 @@ // 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. -@Renderer(#renderCategory, Context(), +@Renderer(#renderCategory, Context(), 'category', visibleTypes: _visibleTypes) -@Renderer(#renderClass, Context()) -@Renderer(#renderConstructor, Context()) -@Renderer(#renderEnum, Context()) -@Renderer(#renderError, Context()) -@Renderer(#renderExtension, Context()) -@Renderer(#renderFunction, Context()) -@Renderer(#renderIndex, Context()) -@Renderer(#renderLibrary, Context()) -@Renderer(#renderMethod, Context()) -@Renderer(#renderMixin, Context()) -@Renderer(#renderProperty, Context()) -@Renderer(#renderSidebarForContainer, - Context>()) +@Renderer(#renderClass, Context(), 'class') +@Renderer(#renderConstructor, Context(), 'constructor') +@Renderer(#renderEnum, Context(), 'enum') +@Renderer(#renderError, Context(), '404error') +@Renderer(#renderExtension, Context(), 'extension') +@Renderer(#renderFunction, Context(), 'function') +@Renderer(#renderIndex, Context(), 'index') +@Renderer(#renderLibrary, Context(), 'library') +@Renderer(#renderMethod, Context(), 'method') +@Renderer(#renderMixin, Context(), 'mixin') +@Renderer(#renderProperty, Context(), 'property') @Renderer( - #renderSidebarForLibrary, Context>()) -@Renderer(#renderTopLevelProperty, Context()) -@Renderer(#renderTypedef, Context()) + #renderSidebarForContainer, + Context>(), + '_sidebar_for_container') +@Renderer(#renderSidebarForLibrary, + Context>(), '_sidebar_for_library') +@Renderer(#renderTopLevelProperty, Context(), + 'top_level_property') +@Renderer(#renderTypedef, Context(), 'typedef') library dartdoc.templates; import 'package:analyzer/file_system/file_system.dart'; diff --git a/lib/src/generator/templates.renderers.dart b/lib/src/generator/templates.runtime_renderers.dart similarity index 100% rename from lib/src/generator/templates.renderers.dart rename to lib/src/generator/templates.runtime_renderers.dart diff --git a/lib/src/mustachio/annotations.dart b/lib/src/mustachio/annotations.dart index 99792054a0..17e837983e 100644 --- a/lib/src/mustachio/annotations.dart +++ b/lib/src/mustachio/annotations.dart @@ -5,8 +5,16 @@ // See the Mustachio README at tool/mustachio/README.md for high-level // documentation. -/// Specifies information for generating a Mustache renderer for a [context] -/// object, using a Mustache template at [templateUri] +import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/type.dart'; +import 'package:meta/meta.dart'; + +/// Specifies information for generating both a runtime-interpreted Mustache +/// renderer and a pre-compiled Mustache renderer for a [context] object, using +/// a Mustache template located at [standardHtmlTemplate] and at +/// [standardMdTemplate], for an HTML template, and for a Markdown template, +/// respectively. +// Update `test/builder_test_base.dart` when updating this. class Renderer { /// The name of the render function to generate. final Symbol name; @@ -14,20 +22,100 @@ class Renderer { /// The type of the context type, specified as the [Context] type argument. final Context context; - /// A set of types which are "visible" to Mustache. Mustache rendering has - /// access to all of a type's public getters if it is visible to Mustache. + /// The unparsed, string form of the URI of the _standard_ HTML template. + /// + /// This represents the Mustache template that dartdoc uses out-of-the-box to + /// render the [context] object while generating documentation in HTML. + final String standardHtmlTemplate; + + /// The unparsed, string form of the URI of the _standard_ Markdown template. + /// + /// This represents the Mustache template that dartdoc uses out-of-the-box to + /// render the [context] object while generating documentation in Markdown. + final String standardMdTemplate; + + /// A set of types which are "visible" to the Mustache runtime interpreter. + /// Mustache runtime-rendering has access to all of a type's public getters if + /// the type is visible to Mustache. /// /// Note that all subtypes and supertypes of a "visible" type are also visible /// to Mustache. final Set visibleTypes; - const Renderer(this.name, this.context, {this.visibleTypes = const {}}); + /// Returns a Renderer with the specified renderer function [name] which can + /// render [context] objects. + /// + /// [standardTemplateBasename] is used as a basename in an + /// Asset URL, in both [standardHtmlTemplate] and [standardMdTemplate], + /// in order to render with the out-of-the-box Mustache templates. + const Renderer( + this.name, + this.context, + String standardTemplateBasename, { + this.visibleTypes = const {}, + }) : standardHtmlTemplate = + 'package:dartdoc/templates/html/$standardTemplateBasename.html', + standardMdTemplate = + 'package:dartdoc/templates/md/$standardTemplateBasename.md'; + + @visibleForTesting + const Renderer.forTest( + this.name, + this.context, + String standardTemplateBasename, { + this.visibleTypes = const {}, + }) : standardHtmlTemplate = 'templates/$standardTemplateBasename.html', + standardMdTemplate = 'templates/$standardTemplateBasename.md'; } /// A container for a type, [T], which is the type of a context object, /// referenced in a `@Renderer` annotation. /// /// An instance of this class holds zero information, except for [T], a type. +// Update `test/builder_test_base.dart` when updating this. class Context { const Context(); } + +/// The specification of a renderer, as derived from a @Renderer annotation. +/// +/// This is only meant to be used by dartdoc's builders. +@internal +class RendererSpec { + /// The name of the render function. + final String name; + + final InterfaceType contextType; + + final Set visibleTypes; + + final String standardHtmlTemplate; + + final String standardMdTemplate; + + final Map standardTemplateUris; + + RendererSpec( + this.name, + this.contextType, + this.visibleTypes, + this.standardHtmlTemplate, + this.standardMdTemplate, + ) : standardTemplateUris = { + TemplateFormat.html: _parseUriFromAnnotation(standardHtmlTemplate), + TemplateFormat.md: _parseUriFromAnnotation(standardMdTemplate), + }; + + /// Parses a URI from a String which comes from a const annotation object. + /// + /// The String value may be the literal value, 'null'. + static Uri _parseUriFromAnnotation(String unparsed) => + unparsed == 'null' || unparsed == null ? null : Uri.parse(unparsed); + + ClassElement get contextElement => contextType.element; +} + +enum TemplateFormat { + html, + md, +} diff --git a/lib/src/mustachio/parser.dart b/lib/src/mustachio/parser.dart index 63de74e38e..f31b2d0414 100644 --- a/lib/src/mustachio/parser.dart +++ b/lib/src/mustachio/parser.dart @@ -420,6 +420,13 @@ abstract class MustachioNode { SourceSpan get span; } +/// A [MustachioNode] with a multi-named key. +mixin HasMultiNamedKey { + List get key; + + SourceSpan get keySpan; +} + /// A Text node, representing literal text. @immutable class Text implements MustachioNode { @@ -436,7 +443,8 @@ class Text implements MustachioNode { /// A Variable node, representing a variable to be resolved. @immutable -class Variable implements MustachioNode { +class Variable with HasMultiNamedKey implements MustachioNode { + @override final List key; final bool escape; @@ -444,6 +452,7 @@ class Variable implements MustachioNode { @override final SourceSpan span; + @override final SourceSpan keySpan; Variable(this.key, @@ -456,7 +465,8 @@ class Variable implements MustachioNode { /// A Section node, representing either a Conditional Section, a Repeated /// Section, or a Value Section, possibly inverted. @immutable -class Section implements MustachioNode { +class Section with HasMultiNamedKey implements MustachioNode { + @override final List key; final bool invert; @@ -466,6 +476,7 @@ class Section implements MustachioNode { @override final SourceSpan span; + @override final SourceSpan keySpan; Section(this.key, this.children, diff --git a/test/mustachio/aot_compiler_builder_test.dart b/test/mustachio/aot_compiler_builder_test.dart new file mode 100644 index 0000000000..bc55942dc1 --- /dev/null +++ b/test/mustachio/aot_compiler_builder_test.dart @@ -0,0 +1,131 @@ +// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file +// 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. + +@Timeout.factor(2) +import 'dart:convert'; +import 'package:analyzer/dart/element/element.dart'; +import 'package:build/build.dart'; +import 'package:build_test/build_test.dart'; +import 'package:test/test.dart'; + +import '../../tool/mustachio/builder.dart'; +import 'builder_test_base.dart'; + +void main() { + InMemoryAssetWriter writer; + + Future resolveGeneratedLibrary( + InMemoryAssetWriter writer) async { + var rendererAsset = AssetId('foo', 'lib/foo.aot_renderers_for_html.dart'); + var writtenStrings = writer.assets + .map((id, content) => MapEntry(id.toString(), utf8.decode(content))); + return await resolveSources(writtenStrings, + (Resolver resolver) => resolver.libraryFor(rendererAsset)); + } + + Future testMustachioBuilder( + String sourceLibraryContent, { + String libraryFrontMatter = libraryFrontMatter, + Map additionalAssets, + }) async { + sourceLibraryContent = ''' +$libraryFrontMatter +$sourceLibraryContent +'''; + await testBuilder( + mustachioBuilder(BuilderOptions({})), + { + ...annotationsAsset, + 'foo|lib/foo.dart': sourceLibraryContent, + 'foo|lib/templates/html/foo.html': 'EMPTY', + 'foo|lib/templates/md/foo.md': 'EMPTY', + 'foo|lib/templates/html/bar.html': 'EMPTY', + 'foo|lib/templates/md/bar.md': 'EMPTY', + ...?additionalAssets, + }, + writer: writer, + ); + } + + setUp(() { + writer = InMemoryAssetWriter(); + }); + + test('builds renderers from multiple annotations', () async { + await testMustachioBuilder( + ''' +class Foo {} +class Bar {} +class Baz {} +''', + libraryFrontMatter: ''' +@Renderer(#renderFoo, Context(), 'foo') +@Renderer(#renderBar, Context(), 'bar') +library foo; +import 'package:mustachio/annotations.dart'; +''', + additionalAssets: { + 'foo|lib/templates/html/foo.html': '{{ >foo_header }}', + 'foo|lib/templates/html/_foo_header.html': 'EMPTY', + }, + ); + var renderersLibrary = await resolveGeneratedLibrary(writer); + + expect(renderersLibrary.getTopLevelFunction('renderFoo'), isNotNull); + expect(renderersLibrary.getTopLevelFunction('renderBar'), isNotNull); + expect( + renderersLibrary.getTopLevelFunction('_renderFoo_partial_foo_header_0'), + isNotNull); + }); + + test('builds a public API render function', () async { + writer = InMemoryAssetWriter(); + await testMustachioBuilder(''' +class Foo {} +''', libraryFrontMatter: ''' +@Renderer(#renderFoo, Context(), 'foo') +library foo; +import 'package:mustachio/annotations.dart'; +'''); + var rendererAsset = AssetId('foo', 'lib/foo.aot_renderers_for_html.dart'); + var generatedContent = utf8.decode(writer.assets[rendererAsset]); + expect(generatedContent, contains('String renderFoo(Foo context0)')); + }); + + test('builds a private render function for a partial', () async { + writer = InMemoryAssetWriter(); + await testMustachioBuilder( + ''' +class Foo {} +''', + libraryFrontMatter: ''' +@Renderer(#renderFoo, Context(), 'foo') +library foo; +import 'package:mustachio/annotations.dart'; +''', + additionalAssets: { + 'foo|lib/templates/html/foo.html': '{{ >foo_header }}', + 'foo|lib/templates/html/_foo_header.html': 'EMPTY', + }, + ); + var rendererAsset = AssetId('foo', 'lib/foo.aot_renderers_for_html.dart'); + var generatedContent = utf8.decode(writer.assets[rendererAsset]); + expect(generatedContent, + contains('String _renderFoo_partial_foo_header_0(Foo context0)')); + }); + + test('builds a renderer for a generic, bounded type', () async { + await testMustachioBuilder(''' +class Foo {} +class Bar {} +class Baz {} +'''); + var renderersLibrary = await resolveGeneratedLibrary(writer); + + var fooRenderFunction = renderersLibrary.getTopLevelFunction('renderFoo'); + expect(fooRenderFunction.typeParameters, hasLength(1)); + var fBound = fooRenderFunction.typeParameters.single.bound; + expect(fBound.getDisplayString(withNullability: false), equals('num')); + }); +} diff --git a/test/mustachio/aot_compiler_render_test.dart b/test/mustachio/aot_compiler_render_test.dart new file mode 100644 index 0000000000..cb22aef29e --- /dev/null +++ b/test/mustachio/aot_compiler_render_test.dart @@ -0,0 +1,27 @@ +// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file +// 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:test/test.dart'; + +import 'foo.aot_renderers_for_html.dart'; +import 'foo.dart'; + +void main() { + test('Renderer renders a non-bool variable node', () async { + var foo = Foo() + ..s1 = 'hello' + ..b1 = false + ..l1 = [1, 2, 3]; + var rendered = renderFoo(foo); + expect(rendered, equals(''' +
+
+ l1: [1, 2, 3]
+ s1: hello b1? no l1:item: 1item: 2item: 3 baz:baz is null
''')); + }); + + // TODO(srawlins): Add waaay more end-to-end render tests. These are + // non-trivial to write though, so that the input Markdown template and + // expected output are visually near each other in the test cases... +} diff --git a/test/mustachio/builder_test_base.dart b/test/mustachio/builder_test_base.dart new file mode 100644 index 0000000000..89badf0c9a --- /dev/null +++ b/test/mustachio/builder_test_base.dart @@ -0,0 +1,54 @@ +// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file +// 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:analyzer/dart/element/element.dart'; + +/// The build package Asset for a copy of the Renderer annotation for tests. +/// +/// In testing builders, the builder cannot access both in-line assets specified +/// in tests, _and_ assets on disk in the package. +// Update this when [Renderer] and [Context] are updated. +const annotationsAsset = { + 'mustachio|lib/annotations.dart': ''' +class Renderer { + final Symbol name; + + final Context context; + + final Set visibleTypes; + + final String standardHtmlTemplate; + + final String standardMdTemplate; + + const Renderer( + this.name, + this.context, + String standardTemplateBasename, { + this.visibleTypes = const {}, + }) : standardHtmlTemplate = + 'package:foo/templates/html/\$standardTemplateBasename.html', + standardMdTemplate = + 'package:foo/templates/md/\$standardTemplateBasename.md'; +} + +class Context { + const Context(); +} +''' +}; + +/// Front matter for a library which declares a Renderer for `Foo`. +const libraryFrontMatter = ''' +@Renderer(#renderFoo, Context(), 'foo', visibleTypes: {Bar, Baz}) +library foo; +import 'package:mustachio/annotations.dart'; +'''; + +extension LibraryExtensions on LibraryElement { + /// Returns the top-level function in [this] library, named [name]. + FunctionElement getTopLevelFunction(String name) => topLevelElements + .whereType() + .firstWhere((element) => element.name == name, orElse: () => null); +} diff --git a/test/mustachio/foo.aot_renderers_for_html.dart b/test/mustachio/foo.aot_renderers_for_html.dart new file mode 100644 index 0000000000..5f01e4d067 --- /dev/null +++ b/test/mustachio/foo.aot_renderers_for_html.dart @@ -0,0 +1,83 @@ +// GENERATED CODE. DO NOT EDIT. +// +// To change the contents of this library, make changes to the builder source +// files in the tool/mustachio/ directory. + +// Sometimes we enter a new section which triggers creating a new variable, but +// the variable is not used; generally when the section is checking if a +// non-bool, non-Iterable field is non-null. +// ignore_for_file: unused_local_variable + +// It is hard to track exact imports without using package:code_builder. +// ignore_for_file: unused_import + +import 'dart:convert' show htmlEscape; + +import 'package:dartdoc/dartdoc.dart'; +import 'package:dartdoc/src/generator/template_data.dart'; +import 'foo.dart'; + +String renderFoo(Foo context0) { + final buffer = StringBuffer(); + buffer.write('''
+ '''); + buffer.write(_renderFoo_partial_foo_header_0(context0)); + buffer.write(''' + + s1: '''); + buffer.write(htmlEscape.convert(context0.s1.toString())); + buffer.write(''' + b1? '''); + if (context0.b1 == true) { + buffer.write('''yes'''); + } + if (context0.b1 != true) { + buffer.write('''no'''); + } + buffer.write(''' + l1:'''); + var context1 = context0.l1; + if (context1 != null) { + for (var context2 in context1) { + buffer.write('''item: '''); + buffer.write(htmlEscape.convert(context2.toString())); + } + } + if (context0.l1?.isEmpty ?? true) { + buffer.write('''no items'''); + } + buffer.write(''' + baz:'''); + var context3 = context0.baz; + if (context3 != null) { + buffer.write(''' + Baz has a '''); + buffer.write(htmlEscape.convert(context3.bar.s2.toString())); + } + if (context0.baz == null) { + buffer.write('''baz is null'''); + } + buffer.write(''' +
'''); + return buffer.toString(); +} + +String _renderFoo_partial_foo_header_0(Foo context0) { + final buffer = StringBuffer(); + buffer.write('''
+ l1: '''); + buffer.write(htmlEscape.convert(context0.l1.toString())); + buffer.write(''' +
'''); + return buffer.toString(); +} + +String renderBar(Bar context0) { + final buffer = StringBuffer(); + return buffer.toString(); +} + +String renderBaz(Baz context0) { + final buffer = StringBuffer(); + return buffer.toString(); +} diff --git a/test/mustachio/foo.aot_renderers_for_md.dart b/test/mustachio/foo.aot_renderers_for_md.dart new file mode 100644 index 0000000000..91f2fc5ef3 --- /dev/null +++ b/test/mustachio/foo.aot_renderers_for_md.dart @@ -0,0 +1,76 @@ +// GENERATED CODE. DO NOT EDIT. +// +// To change the contents of this library, make changes to the builder source +// files in the tool/mustachio/ directory. + +// Sometimes we enter a new section which triggers creating a new variable, but +// the variable is not used; generally when the section is checking if a +// non-bool, non-Iterable field is non-null. +// ignore_for_file: unused_local_variable + +// It is hard to track exact imports without using package:code_builder. +// ignore_for_file: unused_import + +import 'dart:convert' show htmlEscape; + +import 'package:dartdoc/dartdoc.dart'; +import 'package:dartdoc/src/generator/template_data.dart'; +import 'foo.dart'; + +String renderFoo(Foo context0) { + final buffer = StringBuffer(); + buffer.write(_renderFoo_partial_foo_header_0(context0)); + buffer.write(''' + +s1: '''); + buffer.write(htmlEscape.convert(context0.s1.toString())); + buffer.write(''' +b1? '''); + if (context0.b1 == true) { + buffer.write('''yes'''); + } + if (context0.b1 != true) { + buffer.write('''no'''); + } + buffer.write(''' +l1:'''); + var context1 = context0.l1; + if (context1 != null) { + for (var context2 in context1) { + buffer.write('''item: '''); + buffer.write(htmlEscape.convert(context2.toString())); + } + } + if (context0.l1?.isEmpty ?? true) { + buffer.write('''no items'''); + } + buffer.write(''' +baz:'''); + var context3 = context0.baz; + if (context3 != null) { + buffer.write(''' +Baz has a '''); + buffer.write(htmlEscape.convert(context3.bar.s2.toString())); + } + if (context0.baz == null) { + buffer.write('''baz is null'''); + } + return buffer.toString(); +} + +String _renderFoo_partial_foo_header_0(Foo context0) { + final buffer = StringBuffer(); + buffer.write('''l1: '''); + buffer.write(htmlEscape.convert(context0.l1.toString())); + return buffer.toString(); +} + +String renderBar(Bar context0) { + final buffer = StringBuffer(); + return buffer.toString(); +} + +String renderBaz(Baz context0) { + final buffer = StringBuffer(); + return buffer.toString(); +} diff --git a/test/mustachio/foo.dart b/test/mustachio/foo.dart index 94a0ab6b0d..ead8841876 100644 --- a/test/mustachio/foo.dart +++ b/test/mustachio/foo.dart @@ -1,7 +1,7 @@ -@Renderer(#renderFoo, Context(), +@Renderer.forTest(#renderFoo, Context(), 'foo', visibleTypes: {Property1, Property2, Property3}) -@Renderer(#renderBar, Context()) -@Renderer(#renderBaz, Context()) +@Renderer.forTest(#renderBar, Context(), 'bar') +@Renderer.forTest(#renderBaz, Context(), 'baz') library dartdoc.testing.foo; import 'package:dartdoc/src/mustachio/annotations.dart'; diff --git a/test/mustachio/foo.renderers.dart b/test/mustachio/foo.runtime_renderers.dart similarity index 100% rename from test/mustachio/foo.renderers.dart rename to test/mustachio/foo.runtime_renderers.dart diff --git a/test/mustachio/builder_test.dart b/test/mustachio/runtime_renderer_builder_test.dart similarity index 90% rename from test/mustachio/builder_test.dart rename to test/mustachio/runtime_renderer_builder_test.dart index 0c3952ec2e..6e5491fa06 100644 --- a/test/mustachio/builder_test.dart +++ b/test/mustachio/runtime_renderer_builder_test.dart @@ -10,37 +10,14 @@ import 'package:build_test/build_test.dart'; import 'package:test/test.dart'; import '../../tool/mustachio/builder.dart'; - -const _annotationsAsset = { - 'mustachio|lib/annotations.dart': ''' -class Renderer { - final Symbol name; - - final Context context; - - final Set visibleTypes; - - const Renderer(this.name, this.context, {this.visibleTypes = const {}}); -} - -class Context { - const Context(); -} -''' -}; - -const _libraryFrontMatter = ''' -@Renderer(#renderFoo, Context(), visibleTypes: {Bar, Baz}) -library foo; -import 'package:mustachio/annotations.dart'; -'''; +import 'builder_test_base.dart'; void main() { InMemoryAssetWriter writer; Future resolveGeneratedLibrary( InMemoryAssetWriter writer) async { - var rendererAsset = AssetId('foo', 'lib/foo.renderers.dart'); + var rendererAsset = AssetId('foo', 'lib/foo.runtime_renderers.dart'); var writtenStrings = writer.assets .map((id, content) => MapEntry(id.toString(), utf8.decode(content))); return await resolveSources(writtenStrings, @@ -48,7 +25,7 @@ void main() { } Future testMustachioBuilder(String sourceLibraryContent, - {String libraryFrontMatter = _libraryFrontMatter, + {String libraryFrontMatter = libraryFrontMatter, Map outputs}) async { sourceLibraryContent = ''' $libraryFrontMatter @@ -57,8 +34,12 @@ $sourceLibraryContent await testBuilder( mustachioBuilder(BuilderOptions({})), { - ..._annotationsAsset, + ...annotationsAsset, 'foo|lib/foo.dart': sourceLibraryContent, + 'foo|lib/templates/html/foo.html': 'EMPTY', + 'foo|lib/templates/md/foo.md': 'EMPTY', + 'foo|lib/templates/html/bar.html': 'EMPTY', + 'foo|lib/templates/md/bar.md': 'EMPTY', }, outputs: outputs, writer: writer, @@ -96,7 +77,7 @@ class Bar {} class Baz {} '''); renderersLibrary = await resolveGeneratedLibrary(writer); - var rendererAsset = AssetId('foo', 'lib/foo.renderers.dart'); + var rendererAsset = AssetId('foo', 'lib/foo.runtime_renderers.dart'); generatedContent = utf8.decode(writer.assets[rendererAsset]); }); @@ -204,8 +185,8 @@ class Foo {} class Bar {} class Baz {} ''', libraryFrontMatter: ''' -@Renderer(#renderFoo, Context()) -@Renderer(#renderBar, Context()) +@Renderer(#renderFoo, Context(), 'foo') +@Renderer(#renderBar, Context(), 'bar') library foo; import 'package:mustachio/annotations.dart'; '''); @@ -231,12 +212,12 @@ class BarBase {} class Bar extends BarBase {} class Baz {} ''', libraryFrontMatter: ''' -@Renderer(#renderFoo, Context()) -@Renderer(#renderBar, Context()) +@Renderer(#renderFoo, Context(), 'foo') +@Renderer(#renderBar, Context(), 'bar') library foo; import 'package:mustachio/annotations.dart'; '''); - var rendererAsset = AssetId('foo', 'lib/foo.renderers.dart'); + var rendererAsset = AssetId('foo', 'lib/foo.runtime_renderers.dart'); generatedContent = utf8.decode(writer.assets[rendererAsset]); }); @@ -339,9 +320,3 @@ class Method {} }); }); } - -extension on LibraryElement { - FunctionElement getTopLevelFunction(String name) => topLevelElements - .whereType() - .firstWhere((element) => element.name == name, orElse: () => null); -} diff --git a/test/mustachio/renderer_test.dart b/test/mustachio/runtime_renderer_render_test.dart similarity index 99% rename from test/mustachio/renderer_test.dart rename to test/mustachio/runtime_renderer_render_test.dart index a425e1acc5..40dec59c01 100644 --- a/test/mustachio/renderer_test.dart +++ b/test/mustachio/runtime_renderer_render_test.dart @@ -4,7 +4,7 @@ import 'package:dartdoc/src/mustachio/renderer_base.dart'; import 'package:path/path.dart' as p; import 'package:test/test.dart'; import 'foo.dart'; -import 'foo.renderers.dart'; +import 'foo.runtime_renderers.dart'; void main() { /*late*/ MemoryResourceProvider resourceProvider; diff --git a/test/mustachio/templates/_foo_header.html b/test/mustachio/templates/_foo_header.html new file mode 100644 index 0000000000..380426a48a --- /dev/null +++ b/test/mustachio/templates/_foo_header.html @@ -0,0 +1,3 @@ +
+ l1: {{ l1 }} +
\ No newline at end of file diff --git a/test/mustachio/templates/_foo_header.md b/test/mustachio/templates/_foo_header.md new file mode 100644 index 0000000000..319cfba9b5 --- /dev/null +++ b/test/mustachio/templates/_foo_header.md @@ -0,0 +1 @@ +l1: {{ l1 }} \ No newline at end of file diff --git a/test/mustachio/templates/bar.html b/test/mustachio/templates/bar.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/mustachio/templates/bar.md b/test/mustachio/templates/bar.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/mustachio/templates/baz.html b/test/mustachio/templates/baz.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/mustachio/templates/baz.md b/test/mustachio/templates/baz.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/mustachio/templates/foo.html b/test/mustachio/templates/foo.html new file mode 100644 index 0000000000..2cf104bf39 --- /dev/null +++ b/test/mustachio/templates/foo.html @@ -0,0 +1,14 @@ +
+ {{ >foo_header }} + + s1: {{ s1 }} + b1? {{ #b1 }}yes{{ /b1 }}{{ ^b1 }}no{{ /b1 }} + l1: + {{ #l1 }}item: {{.}}{{ /l1 }} + {{ ^l1 }}no items{{ /l1 }} + baz: + {{ #baz }} + Baz has a {{ bar.s2 }} + {{ /baz }} + {{ ^baz }}baz is null{{ /baz }} +
\ No newline at end of file diff --git a/test/mustachio/templates/foo.md b/test/mustachio/templates/foo.md new file mode 100644 index 0000000000..9386d3c347 --- /dev/null +++ b/test/mustachio/templates/foo.md @@ -0,0 +1,12 @@ +{{ >foo_header }} + +s1: {{ s1 }} +b1? {{ #b1 }}yes{{ /b1 }}{{ ^b1 }}no{{ /b1 }} +l1: +{{ #l1 }}item: {{.}}{{ /l1 }} +{{ ^l1 }}no items{{ /l1 }} +baz: +{{ #baz }} +Baz has a {{ bar.s2 }} +{{ /baz }} +{{ ^baz }}baz is null{{ /baz }} \ No newline at end of file diff --git a/tool/grind.dart b/tool/grind.dart index 7f930827ee..330940e965 100644 --- a/tool/grind.dart +++ b/tool/grind.dart @@ -1050,7 +1050,9 @@ Future build() async { final _generatedFilesList = [ '../dartdoc_options.yaml', 'src/generator/html_resources.g.dart', - 'src/generator/templates.renderers.dart', + 'src/generator/templates.aot_renderers_for_html.dart', + 'src/generator/templates.aot_renderers_for_md.dart', + 'src/generator/templates.runtime_renderers.dart', 'src/version.dart', '../test/mustachio/foo.dart', ].map((s) => path.joinAll(path.posix.split(s))); diff --git a/tool/mustachio/README.md b/tool/mustachio/README.md index e76100d34d..95cb8b8aa8 100644 --- a/tool/mustachio/README.md +++ b/tool/mustachio/README.md @@ -164,8 +164,7 @@ types: Mustachio's first set of generated renderers render objects into runtime-interpreted Mustache template blocks. Each template block may be the content of a Mustache template file, a Mustache partial file, or a Mustache -section. The design for a tool which can generate such a renderer is included -after the design for the renderer. +section. The mechanics of the tool which generates these renderers is a separate concern from the mechanics of the renderers themselves. This section is primarily @@ -180,7 +179,9 @@ Any examples in this section will use the following types: abstract class User { String get name; UserProfile get profile; + bool get isFeatured; List? get posts; + Post? featuredPost; } abstract class UserProfile { @@ -625,6 +626,184 @@ inside this partial) and render the partial with the same renderer, using TODO(srawlins): Write. -## Generated renderer for a specific type and a static template which pre-compiles the templates +## Generated renderer for a specific type and a pre-compiled static template + +Mustachio's second set of generated renderers render objects into +ahead-of-time compiled Mustache template blocks. Each template block may be the +content of a Mustache template file, a Mustache partial file, or a Mustache +section. + +The mechanics of the tool which generates these renderers is a separate concern +from the mechanics of the renderers themselves. This section is primarily +concerned with documenting how the renderers work. At the end, a higher level +description of the code generator can be found. + +### Annotation + +The code generation trigger is a `@Renderer` annotation, which specifies a +render function name, a context type, and a template file. The code generator +parses the specified template file, and uses the context type to resolve all tag +keys at the time of code generation. For example, given the following template: + +```html +

{{ name }}

+{{ #isFeatured }}Featured{{ /isFeatured }} +
+{{ #featuredPost }}

{{ title }}

{{ /featuredPost }} +{{ #posts }}

{{ title }}

{{ /posts }} +
+``` + +The code generator resolves `name` to a String getter on User, `posts` to a +`List` getter on User, `isPublished` to a `bool` getter on `Post`, and +`title` to a String getter on `Post`. It has all of the information it needs to +write out the logic of the template as a simple state machine. This state +machine is written out as the render function and helper functions for partials: + +```dart +String renderUser(User context0) { + final buffer = StringBuffer(); + // ... + return buffer.toString(); +} +``` + +The `renderFoo` function takes a `Foo` object, the context object, as +`context0`. Since the context objects exist in a stack and can each be accessed, +we must enumerate them. We write various text to the buffer, according to the +template, and then return the rendered output. + +### Rendering plain text + +Rendering plain text is as simple as writing it to the buffer: + +```dart + buffer.write('''

'''); +``` + +### Rendering a variable + +Rendering a variable requires one or more getter calls. During code generation, +variable keys have been resolved so that the renderer knows the context objects +that provide each getter. + +`{{ name }}` compiles to: + +```dart + buffer.write(htmlEscape.convert(context0.name.toString())); +``` + +This code calls the `name` getter on `conext0`, and then `toString()`. Since +`{{ name }}` uses two brackets, the output must be HTML-escaped. If it were +written `{{{ name }}}`, then the HTML-escaping call would not be made. + +### Rendering a section + +A section could be a conditional section, a repeated section, or a value +section. The code generator will know, and will write the correct behavior into +the renderer. + +#### Rendering a conditional section + +`{{ #isFeatured }}Featured{{ /isFeatured }}` compiles to: + +```dart + if (context0.b1 == true) { + buffer.write('''Featured'''); + } +``` + +The text is written only if `b1` is `true` (not `false` or `null`). If the +section were inverted (starting with `{{ ^isFeatured }}`), this would be a +`!= true` check. + +#### Rendering a repeated section + +`{{ #posts }}

{{ title }}

{{ /posts }}` + +compiles to: + +```dart + var context1 = context0.posts; + if (context1 != null) { + for (var context2 in context1) { + buffer.write('''

'''); + buffer.write(htmlEscape.convert(context2.title.toString())); + buffer.write('''

'''); + } + } +``` + +The section contents are written for each value in `context0.posts` (only if +`context0.posts` is not `null`). In order to avoid accessing the getter multiple +times (and to make the value type-promotable), the value is stored in a local +variable. + +#### Rendering a value section + +`{{ #featuredPost }}

{{ title }}

{{ /featuredPost }}` + +compiles to: + +```dart + var context2 = context0.featuredPost; + if (context2 != null) { + buffer.write('''

'''); + buffer.write(htmlEscape.convert(context2.title.toString())); + buffer.write('''

'''); + } +``` + +The section contents are written only if `context0.featuredPost` is not `null`. +Additionally, the section needs `context0.featuredPost` pushed onto the context +stack, which becomes `context2`. This new context object is used to render the +featured post's `title`. + +### Rendering a partial + +Partials are allowed to reference themselves, so they must be implemented as new +functions which can reference themselves. This template code: + +```html +{{ #posts }}{{ >post }}{{ /posts }} +``` + +will use a custom partial resolver to resolve `post` to a file at `_post.html`, +which contains the following template: + +```html +

{{ title }}

+

by {{ name }}

+``` + +These two templates compile into the following two render functions: + +```dart +String renderUser(User context0) { + final buffer = StringBuffer(); + for (var context1 in context0.posts) { + buffer.write(_renderUser_partial_user_post_0(context1, context0)); + } + return buffer.toString(); +} + +String _renderUser_partial_user_post_0(Post context1, User context0) { + final buffer = StringBuffer(); + buffer.write('''

'''); + buffer.write(htmlEscape.convert(context1.title.toString())); + buffer.write('''

+

by '''); + buffer.write(htmlEscape.convert(context0.name.toString())); + buffer.write('''

'''); + return buffer.toString(); +} +``` + +Note that the partial function is written to accept each context object as a +separate parameter, so that they are easily accessed by name. `context1` is +accessed in order to write the post's `title`, and `context0` is accessed in +order to write the author's `name`. + +### High level design for generating renderers TODO(srawlins): Write. \ No newline at end of file diff --git a/tool/mustachio/builder.dart b/tool/mustachio/builder.dart index dd9fd0c960..c4108ff272 100644 --- a/tool/mustachio/builder.dart +++ b/tool/mustachio/builder.dart @@ -1,7 +1,13 @@ +// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file +// 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:analyzer/dart/element/element.dart'; import 'package:analyzer/src/dart/element/member.dart'; import 'package:build/build.dart'; +import 'package:dartdoc/src/mustachio/annotations.dart'; +import 'codegen_aot_compiler.dart'; import 'codegen_runtime_renderer.dart'; const rendererClassesArePublicOption = 'rendererClassesArePublic'; @@ -15,7 +21,11 @@ class MustachioBuilder implements Builder { @override final buildExtensions = const { - '.dart': ['.renderers.dart'] + '.dart': [ + '.aot_renderers_for_html.dart', + '.aot_renderers_for_md.dart', + '.runtime_renderers.dart', + ] }; @override @@ -29,15 +39,50 @@ class MustachioBuilder implements Builder { final rendererGatherer = _RendererGatherer(entryLib); // Create a new target `AssetId` based on the old one. - var renderersLibrary = inputId.changeExtension('.renderers.dart'); - var contents = ''; + var runtimeRenderersLibrary = + inputId.changeExtension('.runtime_renderers.dart'); + + var aotLibraries = { + TemplateFormat.html: + inputId.changeExtension('.aot_renderers_for_html.dart'), + TemplateFormat.md: inputId.changeExtension('.aot_renderers_for_md.dart'), + }; + + if (rendererGatherer._rendererSpecs.isEmpty) { + await buildStep.writeAsString(runtimeRenderersLibrary, ''); + await buildStep.writeAsString(aotLibraries[TemplateFormat.html], ''); + await buildStep.writeAsString(aotLibraries[TemplateFormat.md], ''); - if (rendererGatherer._rendererSpecs.isNotEmpty) { - contents += buildTemplateRenderers(rendererGatherer._rendererSpecs, - entryLib.source.uri, entryLib.typeProvider, entryLib.typeSystem, - rendererClassesArePublic: _rendererClassesArePublic); + return; + } + + var runtimeRenderersContents = buildRuntimeRenderers( + rendererGatherer._rendererSpecs, + entryLib.source.uri, + entryLib.typeProvider, + entryLib.typeSystem, + rendererClassesArePublic: _rendererClassesArePublic, + ); + await buildStep.writeAsString( + runtimeRenderersLibrary, runtimeRenderersContents); + + for (var format in TemplateFormat.values) { + String aotRenderersContents; + var someSpec = rendererGatherer._rendererSpecs.first; + if (someSpec.standardTemplateUris[format] != null) { + aotRenderersContents = await compileTemplatesToRenderers( + rendererGatherer._rendererSpecs, + entryLib.source.uri, + buildStep, + entryLib.typeProvider, + entryLib.typeSystem, + format, + ); + } else { + aotRenderersContents = ''; + } - await buildStep.writeAsString(renderersLibrary, contents); + await buildStep.writeAsString(aotLibraries[format], aotRenderersContents); } } } @@ -98,7 +143,17 @@ class _RendererGatherer { ...visibleTypesField.toSetValue().map((object) => object.toTypeValue()) }; - return RendererSpec(nameField.toSymbolValue(), contextType, visibleTypes); + var standardHtmlTemplateField = + constantValue.getField('standardHtmlTemplate'); + var standardMdTemplateField = constantValue.getField('standardMdTemplate'); + + return RendererSpec( + nameField.toSymbolValue(), + contextType, + visibleTypes, + standardHtmlTemplateField.toStringValue(), + standardMdTemplateField.toStringValue(), + ); } } diff --git a/tool/mustachio/codegen_aot_compiler.dart b/tool/mustachio/codegen_aot_compiler.dart new file mode 100644 index 0000000000..8ef2e24f70 --- /dev/null +++ b/tool/mustachio/codegen_aot_compiler.dart @@ -0,0 +1,481 @@ +// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file +// 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:analyzer/dart/element/type.dart'; +import 'package:analyzer/dart/element/type_provider.dart'; +import 'package:analyzer/dart/element/type_system.dart'; +import 'package:build/build.dart'; +import 'package:dart_style/dart_style.dart'; +import 'package:dartdoc/src/mustachio/annotations.dart'; +import 'package:dartdoc/src/mustachio/parser.dart'; +import 'package:dartdoc/src/mustachio/renderer_base.dart'; +import 'package:meta/meta.dart'; +import 'package:path/path.dart' as p; + +import 'utilities.dart'; + +/// Compiles all templates specified in [specs] into a Dart library containing +/// a renderer for each template. +Future compileTemplatesToRenderers( + Set specs, + Uri sourceUri, + BuildStep buildStep, + TypeProvider typeProvider, + TypeSystem typeSystem, + TemplateFormat format, +) async { + var buffer = StringBuffer(''' +// GENERATED CODE. DO NOT EDIT. +// +// To change the contents of this library, make changes to the builder source +// files in the tool/mustachio/ directory. + +// Sometimes we enter a new section which triggers creating a new variable, but +// the variable is not used; generally when the section is checking if a +// non-bool, non-Iterable field is non-null. +// ignore_for_file: unused_local_variable + +// It is hard to track exact imports without using package:code_builder. +// ignore_for_file: unused_import + +import 'dart:convert' show htmlEscape; + +import 'package:dartdoc/dartdoc.dart'; +import 'package:dartdoc/src/generator/template_data.dart'; +import '${p.basename(sourceUri.path)}'; +'''); + var buildData = _BuildData(buildStep, typeProvider, typeSystem, format); + for (var spec in specs) { + var templateUri = spec.standardTemplateUris[format]; + if (templateUri == null) continue; + var templateAsset = templateUri.isAbsolute + ? AssetId.resolve(templateUri) + : AssetId.resolve(templateUri, from: buildStep.inputId); + var compiler = await _AotCompiler._readAndParse( + spec.contextType, + spec.name, + templateAsset, + buildData, + buffer, + ); + await compiler._compileToRenderer(); + } + return DartFormatter().format(buffer.toString()); +} + +/// A class which compiles a single template file into a renderer Dart function, +/// and possible support functions for partial templates. +class _AotCompiler { + /// The template to be compiled. + final AssetId _templateAssetId; + + /// The context type which is to be rendered into the compiled template. + final InterfaceType _contextType; + + /// The name of the renderer, which is either a public name (for top-level + /// renderers specified in a `@Renderer` annotation), or a private name for + /// a partial. + final String _rendererName; + + final _BuildData _buildData; + + /// The parsed syntax tree of the template at [_templateAssetId]. + final List _syntaxTree; + + /// The output buffer into which the various renderer source code is to be + /// written. + final StringBuffer _buffer; + + /// The set of compilers for all referenced partials. + final Set<_AotCompiler> _partialCompilers = {}; + + /// The current stack of context objects (as variable lookups). + final List<_VariableLookup> _contextStack; + + /// A counter for naming partial render functions. + /// + /// Incrementing the counter keeps names unique. + int _partialCounter = 0; + + /// A counter for naming context variables. + /// + /// Incrementing the counter keeps names unique. + int _contextNameCounter; + + /// Reads the template at [templateAssetId] and parses it into a syntax tree, + /// returning an [_AotCompiler] with the necessary information to be able to + /// compile the template into a renderer. + static Future<_AotCompiler> _readAndParse( + InterfaceType contextType, + String rendererName, + AssetId templateAssetId, + _BuildData buildData, + StringBuffer buffer, { + List<_VariableLookup> contextStack, + }) async { + var template = await buildData._buildStep.readAsString(templateAssetId); + var syntaxTree = MustachioParser(template, templateAssetId.uri).parse(); + return _AotCompiler._(contextType, rendererName, templateAssetId, + syntaxTree, buildData, buffer, + contextStack: contextStack); + } + + _AotCompiler._( + this._contextType, + this._rendererName, + this._templateAssetId, + this._syntaxTree, + this._buildData, + this._buffer, { + List<_VariableLookup> contextStack, + }) : _contextStack = _rename(contextStack ?? []), + _contextNameCounter = contextStack?.length ?? 0; + + /// Returns a copy of [original], replacing each variable's name with + /// `context0` through `contextN` for `N` variables. + /// + /// This ensures that each renderer accepts a simple list of context objects + /// with predictable names. + static List<_VariableLookup> _rename(List<_VariableLookup> original) { + var result = <_VariableLookup>[]; + var index = original.length - 1; + for (var variable in original) { + result.push(_VariableLookup(variable.type, 'context$index')); + index--; + } + return [...result.reversed]; + } + + Future _compileToRenderer() async { + if (_contextStack.isEmpty) { + var contextName = 'context0'; + var contextVariable = _VariableLookup(_contextType, contextName); + _contextStack.push(contextVariable); + _contextNameCounter++; + } + + // Get the type parameters of _each_ of the context types in the stack, + // including their bounds, concatenate them, and wrap them in angle + // brackets. + // TODO(srawlins): This will produce erroneous code if any two context types + // have type parameters with the same name. Something like: + // _renderFoo_partial_bar_1(Baz context1, Foo context0) + // Rename type parameters to some predictable collision-free naming scheme; + // the body of the function should not reference the type parameters, so + // this should be perfectly possible. + var typeParametersString = asGenerics([ + for (var context in _contextStack) + ...context.type.element.typeParameters + .map((tp) => tp.getDisplayString(withNullability: false)), + ]); + // TODO(srawlins): Consider the option of passing in a StringSink to allow + // for streaming writes. + _buffer.writeln('String $_rendererName$typeParametersString('); + _buffer.writeln(_contextStack.map((context) { + var contextElement = context.type.element; + var contextTypeName = contextElement.displayName; + var typeVariablesString = contextElement.typeVariablesString; + return '$contextTypeName$typeVariablesString ${context.name}'; + }).join(',')); + _buffer.writeln(') {'); + _buffer.writeln(' final buffer = StringBuffer();'); + await _BlockCompiler(this, _contextStack)._compile(_syntaxTree); + _buffer.writeln(' return buffer.toString();'); + _buffer.writeln('}'); + + for (var partialRenderer in _partialCompilers) { + await partialRenderer._compileToRenderer(); + _buffer.write(partialRenderer._buffer.toString()); + } + } +} + +/// A class which can compile a Mustache block of nodes into Dart source for a +/// renderer. +class _BlockCompiler { + final _AotCompiler _templateCompiler; + + final List<_VariableLookup> _contextStack; + + _BlockCompiler(this._templateCompiler, this._contextStack); + + void write(String text) => _templateCompiler._buffer.write(text); + + void writeln(String text) => _templateCompiler._buffer.writeln(text); + + InterfaceType get contextType => _contextStack.first.type; + + String get contextName => _contextStack.first.name; + + TemplateFormat get format => _templateCompiler._buildData._format; + + TypeProvider get typeProvider => _templateCompiler._buildData._typeProvider; + + TypeSystem get typeSystem => _templateCompiler._buildData._typeSystem; + + /// Generates a new name for a context variable. Each context variable going + /// up the stack needs to be accessible, so they each need a unique variable + /// name. + String getNewContextName() { + var newContextName = 'context${_templateCompiler._contextNameCounter}'; + _templateCompiler._contextNameCounter++; + return newContextName; + } + + /// The base name of a partial rendering function. + String get partialBaseName => '_${_templateCompiler._rendererName}_partial'; + + Future _compile(List syntaxTree) async { + for (var node in syntaxTree) { + if (node is Text) { + _writeText(node.content); + } else if (node is Variable) { + var variableLookup = _lookUpGetter(node); + _writeGetter(variableLookup, escape: node.escape); + } else if (node is Section) { + await _compileSection(node); + } else if (node is Partial) { + await _compilePartial(node); + } + } + } + + /// Compiles [node] into a renderer's Dart source. + Future _compilePartial(Partial node) async { + var extension = format == TemplateFormat.html ? 'html' : 'md'; + var partialAssetId = AssetId.resolve(Uri.parse('_${node.key}.$extension'), + from: _templateCompiler._templateAssetId); + var partialRenderer = _templateCompiler._partialCompilers.firstWhere( + (p) => p._templateAssetId == partialAssetId, + orElse: () => null); + if (partialRenderer == null) { + var name = + '${partialBaseName}_${node.key}_${_templateCompiler._partialCounter}'; + partialRenderer = await _AotCompiler._readAndParse(contextType, name, + partialAssetId, _templateCompiler._buildData, StringBuffer(), + contextStack: _contextStack); + // Add this partial renderer; to be written later. + _templateCompiler._partialCompilers.add(partialRenderer); + _templateCompiler._partialCounter++; + } + // Call the partial's renderer function here; the definition of the renderer + // function is written later. + write('buffer.write('); + writeln('${partialRenderer._rendererName}('); + writeln(_contextStack.map((context) => context.name).join(',')); + writeln('));'); + } + + /// Compiles [node] into a renderer's Dart source. + Future _compileSection(Section node) async { + var variableLookup = _lookUpGetter(node); + if (variableLookup == null) { + throw MustachioResolutionError(node.keySpan.message( + "Failed to resolve '${node.key}' as a property on the context type:" + '$contextType')); + } + if (variableLookup.type.isDartCoreBool) { + // Conditional block. + await _compileConditionalSection(variableLookup, node.children, + invert: node.invert); + } else if (typeSystem.isAssignableTo( + variableLookup.type, typeProvider.iterableDynamicType)) { + // Repeated block. + await _compileRepeatedSection(variableLookup, node.children, + invert: node.invert); + } else { + // Use accessor value as context. + await _compileValueSection(variableLookup, node.children, + invert: node.invert); + } + } + + /// Compiles a conditional section containing [block] into a renderer's Dart + /// source. + Future _compileConditionalSection( + _VariableLookup variableLookup, List block, + {bool invert = false}) async { + var variableAccess = variableLookup.name; + if (invert) { + writeln('if ($variableAccess != true) {'); + } else { + writeln('if ($variableAccess == true) {'); + } + await _BlockCompiler(_templateCompiler, _contextStack)._compile(block); + writeln('}'); + } + + /// Compiles a repeated section containing [block] into a renderer's Dart + /// source. + Future _compileRepeatedSection( + _VariableLookup variableLookup, List block, + {bool invert = false}) async { + var variableAccess = variableLookup.name; + if (invert) { + writeln('if ($variableAccess?.isEmpty ?? true) {'); + await _compile(block); + writeln('}'); + } else { + var variableAccessResult = getNewContextName(); + writeln('var $variableAccessResult = $variableAccess;'); + var newContextName = getNewContextName(); + writeln('if ($variableAccessResult != null) {'); + writeln(' for (var $newContextName in $variableAccessResult) {'); + // If [loopType] is something like `C` where + // `class C implements Queue>`, we need the [ClassElement] + // for [Iterable], and then use [DartType.asInstanceOf] to ultimately + // determine that the inner type of the loop is, for example, + // `Future`. + var iterableElement = typeProvider.iterableElement; + var iterableType = variableLookup.type.asInstanceOf(iterableElement); + var innerContextType = iterableType.typeArguments.first; + var innerContext = _VariableLookup(innerContextType, newContextName); + _contextStack.push(innerContext); + await _compile(block); + _contextStack.pop(); + writeln(' }'); + writeln('}'); + } + } + + /// Compiles a value section containing [block] into a renderer's Dart source. + Future _compileValueSection( + _VariableLookup variableLookup, List block, + {bool invert = false}) async { + var variableAccess = variableLookup.name; + if (invert) { + writeln('if ($variableAccess == null) {'); + await _compile(block); + writeln('}'); + } else { + var innerContextName = getNewContextName(); + writeln('var $innerContextName = $variableAccess;'); + writeln('if ($innerContextName != null) {'); + var innerContext = _VariableLookup(variableLookup.type, innerContextName); + _contextStack.push(innerContext); + await _compile(block); + _contextStack.pop(); + writeln('}'); + } + } + + /// Returns a valid [_VariableLookup] on a Mustache node, [node] by resolving + /// its key. + _VariableLookup _lookUpGetter(HasMultiNamedKey node) { + var key = node.key; + + // '.' is an entirely special case. + if (key.length == 1 && key[0] == '.') { + return _VariableLookup(contextType, contextName); + } + + var primaryName = key[0]; + + for (var context in _contextStack) { + var getter = + context.type.lookUpGetter2(primaryName, contextType.element.library); + if (getter == null) { + continue; + } + + var type = getter.returnType; + var contextChain = '${context.name}.$primaryName'; + var remainingNames = [...key.skip(1)]; + for (var secondaryKey in remainingNames) { + getter = (type as InterfaceType) + .lookUpGetter2(secondaryKey, type.element.library); + if (getter == null) { + throw MustachioResolutionError(node.keySpan.message( + "Failed to resolve '$secondaryKey' on ${context.type} while " + 'resolving $remainingNames as a property chain on any types in ' + 'the context chain: $contextChain, after first resolving ' + "'$primaryName' to a property on $type")); + } + type = getter.returnType; + contextChain = '$contextChain.$secondaryKey'; + } + return _VariableLookup(type, contextChain); + } + + var contextTypes = [ + for (var c in _contextStack) c.type, + ]; + throw MustachioResolutionError(node.keySpan + .message("Failed to resolve '$key' as a property on any types in the " + 'context chain: $contextTypes')); + } + + /// Writes [content] to the generated render functions as text, properly + /// handling newlines, quotes, and other special characters. + void _writeText(String content) { + if (content.isEmpty) return; + if (content == '\n') { + // Blank lines happen a lot; just indicate them as such. + writeln('buffer.writeln();'); + } else { + content = content + .replaceAll(r'\', r'\\') + .replaceAll("'", r"\'") + .replaceAll(r'$', r'\$'); + if (_multipleWhitespacePattern.hasMatch(content)) { + write("buffer.write('"); + write(content.replaceAll('\n', '\\n')); + writeln("');"); + } else { + write("buffer.write('''"); + write(content); + writeln("''');"); + } + } + } + + /// A pattern for a String containing only space and newlines, more than one. + static final RegExp _multipleWhitespacePattern = RegExp('^[ \\n]+\$'); + + /// Writes a call to [variableLookup] to the renderer. + /// + /// The result is HTML-escaped if [escape] is true. + void _writeGetter(_VariableLookup variableLookup, {bool escape = true}) { + var variableAccess = variableLookup.name; + if (escape) { + writeln('buffer.write(htmlEscape.convert(' + '$variableAccess.toString()));'); + } else { + writeln('buffer.write($variableAccess.toString());'); + } + } +} + +/// Various static build data to be used for each renderer, including specified +/// renderers and template renderers. +@immutable +class _BuildData { + final BuildStep _buildStep; + + final TypeProvider _typeProvider; + + final TypeSystem _typeSystem; + + final TemplateFormat _format; + + _BuildData( + this._buildStep, this._typeProvider, this._typeSystem, this._format); +} + +/// Represents a variable lookup via property access chain [name] which returns +/// an object of type [type]. +@immutable +class _VariableLookup { + final InterfaceType type; + + final String name; + + _VariableLookup(this.type, this.name); +} + +extension on List { + void push(T value) => insert(0, value); + + T pop() => removeAt(0); +} diff --git a/tool/mustachio/codegen_runtime_renderer.dart b/tool/mustachio/codegen_runtime_renderer.dart index 2ba5735b79..5faff4a21a 100644 --- a/tool/mustachio/codegen_runtime_renderer.dart +++ b/tool/mustachio/codegen_runtime_renderer.dart @@ -9,27 +9,18 @@ import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type_provider.dart'; import 'package:analyzer/dart/element/type_system.dart'; import 'package:dart_style/dart_style.dart'; +import 'package:dartdoc/src/mustachio/annotations.dart'; import 'package:meta/meta.dart'; import 'package:path/path.dart' as p; -/// The specification of a renderer, as derived from a @Renderer annotation. -class RendererSpec { - /// The name of the render function. - final String _name; - - final InterfaceType _contextType; - - final Set _visibleTypes; - - RendererSpec(this._name, this._contextType, this._visibleTypes); -} +import 'utilities.dart'; /// Builds [specs] into a Dart library containing runtime renderers. -String buildTemplateRenderers(Set specs, Uri sourceUri, +String buildRuntimeRenderers(Set specs, Uri sourceUri, TypeProvider typeProvider, TypeSystem typeSystem, {bool rendererClassesArePublic = false}) { var visibleElements = specs - .map((spec) => spec._visibleTypes) + .map((spec) => spec.visibleTypes) .reduce((value, element) => value.union(element)) .map((type) => type.element) .toSet(); @@ -37,7 +28,7 @@ String buildTemplateRenderers(Set specs, Uri sourceUri, sourceUri, typeProvider, typeSystem, visibleElements, rendererClassesArePublic: rendererClassesArePublic) ._buildTemplateRenderers(specs); - return DartFormatter().format(raw.toString()); + return DartFormatter().format(raw); } /// This class builds runtime Mustache renderers from a set of [RendererSpec]s. @@ -121,20 +112,20 @@ import '${p.basename(_sourceUri.path)}'; /// Adds type specified in [spec] to the [_typesToProcess] queue, as well as /// all supertypes, and the types of all valid getters, recursively. void _addTypesForRendererSpec(RendererSpec spec) { - var element = spec._contextType.element; + var element = spec.contextElement; var rendererInfo = _RendererInfo(element, - public: _rendererClassesArePublic, publicApiFunctionName: spec._name); + public: _rendererClassesArePublic, publicApiFunctionName: spec.name); _typesToProcess.add(rendererInfo); _typeToRenderFunctionName[element] = rendererInfo._renderFunctionName; _typeToRendererClassName[element] = rendererInfo._rendererClassName; - spec._contextType.accessors.forEach(_addPropertyToProcess); + spec.contextType.accessors.forEach(_addPropertyToProcess); - for (var mixin in spec._contextType.element.mixins) { + for (var mixin in spec.contextElement.mixins) { _addTypeToProcess(mixin.element, isFullRenderer: true, includeRenderFunction: false); } - var superclass = spec._contextType.element.supertype; + var superclass = spec.contextElement.supertype; while (superclass != null) { // Any type specified with a renderer spec (`@Renderer`) is full. @@ -416,7 +407,7 @@ class ${renderer._rendererClassName}${renderer._typeParametersString} _typeToRendererClassName[contextClass.supertype.element]; if (superclassRendererName != null) { var superMapName = '$superclassRendererName.propertyMap'; - var generics = _asGenerics([ + var generics = asGenerics([ ...contextClass.supertype.typeArguments .map((e) => e.getDisplayString(withNullability: false)), _contextTypeVariable @@ -435,7 +426,7 @@ class ${renderer._rendererClassName}${renderer._typeParametersString} var mixinRendererName = _typeToRendererClassName[mixin.element]; if (mixinRendererName != null) { var mixinMapName = '$mixinRendererName.propertyMap'; - var generics = _asGenerics([ + var generics = asGenerics([ ...mixin.typeArguments .map((e) => e.getDisplayString(withNullability: false)), _contextTypeVariable @@ -616,41 +607,20 @@ class _RendererInfo { final String _rendererClassName; - /// The type parameters of the context type, if any, as a String, including - /// bounds and the angled brackets, otherwise a blank String. - String get _typeParametersString { - return _asGenerics(_contextClass.typeParameters - .map((tp) => tp.getDisplayString(withNullability: false))); - } + String get _typeParametersString => _contextClass.typeParametersString; - /// The type variables of the context type, if any, as a String, including - /// the angled brackets, otherwise a blank String. - String get _typeVariablesString { - return _asGenerics(_contextClass.typeParameters.map((tp) => tp.name)); - } + String get _typeVariablesString => _contextClass.typeVariablesString; - /// Returns the type parameters of the context type, and [extra], as they - /// appear in a list of generics. - String _typeParametersStringWith(String extra) { - return _asGenerics([ - ..._contextClass.typeParameters - .map((tp) => tp.getDisplayString(withNullability: false)), - extra, - ]); - } + String _typeParametersStringWith(String extra) => + _contextClass.typeParametersStringWith(extra); /// Returns the type arguments of the context type, and [extra], as they /// appear in a list of generics. String _typeArgumentsStringWith(String extra) { - return _asGenerics([ + return asGenerics([ ..._contextClass.thisType.typeArguments .map((tp) => tp.getDisplayString(withNullability: false)), extra, ]); } } - -/// Returns [values] as they appear in a list of generics, with angled brackets, -/// and an empty string when [values] is empty. -String _asGenerics(Iterable values) => - values.isEmpty ? '' : '<${values.join(', ')}>'; diff --git a/tool/mustachio/utilities.dart b/tool/mustachio/utilities.dart new file mode 100644 index 0000000000..983c421a5e --- /dev/null +++ b/tool/mustachio/utilities.dart @@ -0,0 +1,35 @@ +// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file +// 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:analyzer/dart/element/element.dart'; + +extension ClassExtensions on ClassElement { + /// The type parameters, if any, as a String, including bounds and the angled + /// brackets, otherwise a blank String. + String get typeParametersString { + return asGenerics(typeParameters + .map((tp) => tp.getDisplayString(withNullability: false))); + } + + /// The type variables, if any, as a String, including the angled brackets, + /// otherwise a blank String. + String get typeVariablesString { + return asGenerics(typeParameters.map((tp) => tp.name)); + } + + /// Returns the type parameters, and [extra], as they appear in a list of + /// generics. + String typeParametersStringWith(String extra) { + return asGenerics([ + ...typeParameters + .map((tp) => tp.getDisplayString(withNullability: false)), + extra, + ]); + } +} + +/// Returns [values] as they appear in a list of generics, with angled brackets, +/// and an empty string when [values] is empty. +String asGenerics(Iterable values) => + values.isEmpty ? '' : '<${values.join(', ')}>';