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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+ ''');
+ buffer.write(context3.linkedNameWithParameters.toString());
+ buffer.write(''' ''');
+ }
+ }
+ 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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+ Topics ''');
+ var context3 = context2.documentedCategoriesSorted;
+ if (context3 != null) {
+ for (var context4 in context3) {
+ buffer.write('''
+ ''');
+ buffer.write(context4.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ buffer.write('''
+ Libraries ''');
+ }
+ if (context2.isFirstPackage != true) {
+ buffer.write('''
+ ''');
+ buffer.write(htmlEscape.convert(context2.name.toString()));
+ buffer.write(''' ''');
+ }
+ var context5 = context2.defaultCategory;
+ if (context5 != null) {
+ var context6 = context5.publicLibrariesSorted;
+ if (context6 != null) {
+ for (var context7 in context6) {
+ buffer.write('''
+ ''');
+ buffer.write(context7.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ var context8 = context2.categoriesWithPublicLibraries;
+ if (context8 != null) {
+ for (var context9 in context8) {
+ buffer.write('''
+ ''');
+ buffer.write(htmlEscape.convert(context9.name.toString()));
+ buffer.write(''' ''');
+ var context10 = context9.publicLibrariesSorted;
+ if (context10 != null) {
+ for (var context11 in context10) {
+ buffer.write('''
+ ''');
+ buffer.write(context11.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ }
+ }
+ }
+ 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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+ Topics ''');
+ var context3 = context2.documentedCategoriesSorted;
+ if (context3 != null) {
+ for (var context4 in context3) {
+ buffer.write('''
+ ''');
+ buffer.write(context4.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ buffer.write('''
+ Libraries ''');
+ }
+ if (context2.isFirstPackage != true) {
+ buffer.write('''
+ ''');
+ buffer.write(htmlEscape.convert(context2.name.toString()));
+ buffer.write(''' ''');
+ }
+ var context5 = context2.defaultCategory;
+ if (context5 != null) {
+ var context6 = context5.publicLibrariesSorted;
+ if (context6 != null) {
+ for (var context7 in context6) {
+ buffer.write('''
+ ''');
+ buffer.write(context7.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ var context8 = context2.categoriesWithPublicLibraries;
+ if (context8 != null) {
+ for (var context9 in context8) {
+ buffer.write('''
+ ''');
+ buffer.write(htmlEscape.convert(context9.name.toString()));
+ buffer.write(''' ''');
+ var context10 = context9.publicLibrariesSorted;
+ if (context10 != null) {
+ for (var context11 in context10) {
+ buffer.write('''
+ ''');
+ buffer.write(context11.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ }
+ }
+ }
+ 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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+ ''');
+ buffer.write(context3.linkedNameWithParameters.toString());
+ buffer.write(''' ''');
+ }
+ }
+ 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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+ Constructors ''');
+ var context2 = context1.publicConstructorsSorted;
+ if (context2 != null) {
+ for (var context3 in context2) {
+ buffer.write('''
+ ''');
+ buffer.write(htmlEscape.convert(context3.shortName.toString()));
+ buffer.write(''' ''');
+ }
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.isEnum == true) {
+ if (context1.hasPublicConstantFields == true) {
+ buffer.write('''
+ Constants ''');
+ var context4 = context1.publicConstantFieldsSorted;
+ if (context4 != null) {
+ for (var context5 in context4) {
+ buffer.write('''
+ ''');
+ buffer.write(context5.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.isClassOrEnum == true) {
+ if (context1.hasPublicInstanceFields == true) {
+ buffer.write('''
+
+ Properties
+ ''');
+ 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('''
+ Methods ''');
+ 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('''
+ Operators ''');
+ 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('''
+ Properties
+ ''');
+ var context12 = context1.publicInstanceFieldsSorted;
+ if (context12 != null) {
+ for (var context13 in context12) {
+ buffer.write('''
+ ''');
+ buffer.write(context13.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.hasPublicInstanceMethods == true) {
+ buffer.write('''
+ Methods ''');
+ var context14 = context1.publicInstanceMethodsSorted;
+ if (context14 != null) {
+ for (var context15 in context14) {
+ buffer.write('''
+ ''');
+ buffer.write(context15.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.hasPublicInstanceOperators == true) {
+ buffer.write('''
+ Operators ''');
+ var context16 = context1.publicInstanceOperatorsSorted;
+ if (context16 != null) {
+ for (var context17 in context16) {
+ buffer.write('''
+ ''');
+ buffer.write(context17.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.isClassOrExtension == true) {
+ if (context1.hasPublicVariableStaticFields == true) {
+ buffer.write('''
+ Static properties ''');
+ var context18 = context1.publicVariableStaticFieldsSorted;
+ if (context18 != null) {
+ for (var context19 in context18) {
+ buffer.write('''
+ ''');
+ buffer.write(context19.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.hasPublicStaticMethods == true) {
+ buffer.write('''
+ Static methods ''');
+ var context20 = context1.publicStaticMethodsSorted;
+ if (context20 != null) {
+ for (var context21 in context20) {
+ buffer.write('''
+ ''');
+ buffer.write(context21.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.hasPublicConstantFields == true) {
+ buffer.write('''
+ Constants ''');
+ var context22 = context1.publicConstantFieldsSorted;
+ if (context22 != null) {
+ for (var context23 in context22) {
+ buffer.write('''
+ ''');
+ buffer.write(context23.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ }
+ }
+ 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('''
+ Classes ''');
+ var context2 = context1.publicClassesSorted;
+ if (context2 != null) {
+ for (var context3 in context2) {
+ buffer.write('''
+ ''');
+ buffer.write(context3.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.hasPublicExtensions == true) {
+ buffer.write('''
+ Extensions ''');
+ var context4 = context1.publicExtensionsSorted;
+ if (context4 != null) {
+ for (var context5 in context4) {
+ buffer.write('''
+ ''');
+ buffer.write(context5.linkedName.toString());
+ 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('''
+ ''');
+ buffer.write(context7.linkedName.toString());
+ 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('''
+ ''');
+ buffer.write(context9.linkedName.toString());
+ 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('''
+ ''');
+ buffer.write(context11.linkedName.toString());
+ 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('''
+ ''');
+ buffer.write(context13.linkedName.toString());
+ 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('''
+ ''');
+ buffer.write(context15.linkedName.toString());
+ 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('''
+ ''');
+ buffer.write(context17.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ buffer.writeln();
+ if (context1.hasPublicExceptions == true) {
+ buffer.write('''
+ Exceptions ''');
+ var context18 = context1.publicExceptionsSorted;
+ if (context18 != null) {
+ for (var context19 in context18) {
+ buffer.write('''
+ ''');
+ buffer.write(context19.linkedName.toString());
+ buffer.write(''' ''');
+ }
+ }
+ }
+ }
+ 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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+
+
+
+
+
+
+
+''');
+ 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('''
+ ''');
+ buffer.write(context4.linkedNameWithParameters.toString());
+ buffer.write(''' ''');
+ }
+ }
+ 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('''
+ ''');
+ buffer.write(context3.linkedNameWithParameters.toString());
+ buffer.write(''' ''');
+ }
+ }
+ 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(', ')}>';