From 7396c1a089896eb7d5f06f5fc5fcb1491f3865a9 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Tue, 27 Aug 2024 20:16:53 -0700 Subject: [PATCH] Display 'Available extensions' in more, correct, places We weren't displaying them on enums, mixins, or extension types. Also fixed some capitalization, and margins. --- lib/resources/styles.css | 1 + .../templates.aot_renderers_for_html.dart | 227 ++++++++++-------- lib/templates/_available_extensions.html | 8 + lib/templates/_mixed_in_types.html | 2 +- lib/templates/class.html | 10 +- lib/templates/enum.html | 1 + lib/templates/extension_type.html | 1 + lib/templates/mixin.html | 5 +- test/templates/class_test.dart | 15 ++ test/templates/enum_test.dart | 13 +- test/templates/extension_type_test.dart | 15 ++ 11 files changed, 185 insertions(+), 113 deletions(-) create mode 100644 lib/templates/_available_extensions.html diff --git a/lib/resources/styles.css b/lib/resources/styles.css index 64bfa61aa7..b3492baebc 100644 --- a/lib/resources/styles.css +++ b/lib/resources/styles.css @@ -661,6 +661,7 @@ footer a, footer a:hover { } .markdown.desc { + margin-bottom: 1em; max-width: 700px; } diff --git a/lib/src/generator/templates.aot_renderers_for_html.dart b/lib/src/generator/templates.aot_renderers_for_html.dart index 17156a9efe..2c7183723d 100644 --- a/lib/src/generator/templates.aot_renderers_for_html.dart +++ b/lib/src/generator/templates.aot_renderers_for_html.dart @@ -338,45 +338,29 @@ String renderClass(ClassTemplateData context0) { buffer.write(''' '''); } - buffer.writeln(); - if (context2.hasPotentiallyApplicableExtensions) { - buffer.writeln(); - buffer.write(''' -
Available Extensions
-
'''); - } buffer.write('\n\n '); - buffer.write(_renderClass_partial_container_annotations_8(context2)); + buffer.write(_renderClass_partial_available_extensions_8(context2)); + buffer.write('\n '); + buffer.write(_renderClass_partial_container_annotations_9(context2)); buffer.writeln(); buffer.write(''' '''); } buffer.write('\n\n '); - buffer.write(_renderClass_partial_constructors_9(context2)); + buffer.write(_renderClass_partial_constructors_10(context2)); buffer.write('\n '); - buffer.write(_renderClass_partial_instance_fields_10(context2)); + buffer.write(_renderClass_partial_instance_fields_11(context2)); buffer.write('\n '); - buffer.write(_renderClass_partial_instance_methods_11(context2)); + buffer.write(_renderClass_partial_instance_methods_12(context2)); buffer.write('\n '); - buffer.write(_renderClass_partial_instance_operators_12(context2)); + buffer.write(_renderClass_partial_instance_operators_13(context2)); buffer.write('\n '); - buffer.write(_renderClass_partial_static_properties_13(context2)); + buffer.write(_renderClass_partial_static_properties_14(context2)); buffer.write('\n '); - buffer.write(_renderClass_partial_static_methods_14(context2)); + buffer.write(_renderClass_partial_static_methods_15(context2)); buffer.write('\n '); - buffer.write(_renderClass_partial_static_constants_15(context2)); + buffer.write(_renderClass_partial_static_constants_16(context2)); buffer.writeln(); buffer.write(''' @@ -384,7 +368,7 @@ String renderClass(ClassTemplateData context0) { '''); - buffer.write(_renderClass_partial_footer_17(context0)); + buffer.write(_renderClass_partial_footer_18(context0)); buffer.writeln(); return buffer.toString(); @@ -542,7 +526,9 @@ String renderEnum(EnumTemplateData context0) { buffer.write('\n '); buffer.write(_renderEnum_partial_mixed_in_types_7(context2)); buffer.write('\n '); - buffer.write(_renderEnum_partial_container_annotations_8(context2)); + buffer.write(_renderEnum_partial_available_extensions_8(context2)); + buffer.write('\n '); + buffer.write(_renderEnum_partial_container_annotations_9(context2)); buffer.writeln(); buffer.write(''' @@ -559,7 +545,7 @@ String renderEnum(EnumTemplateData context0) { var context3 = context2.publicEnumValues; for (var context4 in context3) { buffer.write('\n '); - buffer.write(_renderEnum_partial_constant_9(context4)); + buffer.write(_renderEnum_partial_constant_10(context4)); } buffer.writeln(); buffer.write(''' @@ -567,24 +553,24 @@ String renderEnum(EnumTemplateData context0) { '''); } buffer.write('\n\n '); - buffer.write(_renderEnum_partial_instance_fields_10(context2)); + buffer.write(_renderEnum_partial_instance_fields_11(context2)); buffer.write('\n '); - buffer.write(_renderEnum_partial_instance_methods_11(context2)); + buffer.write(_renderEnum_partial_instance_methods_12(context2)); buffer.write('\n '); - buffer.write(_renderEnum_partial_instance_operators_12(context2)); + buffer.write(_renderEnum_partial_instance_operators_13(context2)); buffer.write('\n '); - buffer.write(_renderEnum_partial_static_properties_13(context2)); + buffer.write(_renderEnum_partial_static_properties_14(context2)); buffer.write('\n '); - buffer.write(_renderEnum_partial_static_methods_14(context2)); + buffer.write(_renderEnum_partial_static_methods_15(context2)); buffer.write('\n '); - buffer.write(_renderEnum_partial_static_constants_15(context2)); + buffer.write(_renderEnum_partial_static_constants_16(context2)); buffer.writeln(); buffer.write(''' '''); - buffer.write(_renderEnum_partial_footer_17(context0)); + buffer.write(_renderEnum_partial_footer_18(context0)); buffer.writeln(); return buffer.toString(); @@ -817,29 +803,31 @@ String renderExtensionType( buffer.write(''' '''); } + buffer.write('\n '); + buffer.write(_renderExtensionType_partial_available_extensions_6(context2)); buffer.writeln(); buffer.write(''' '''); - buffer.write(_renderExtensionType_partial_container_annotations_6(context2)); + buffer.write(_renderExtensionType_partial_container_annotations_7(context2)); buffer.writeln(); buffer.write(''' '''); - buffer.write(_renderExtensionType_partial_constructors_7(context2)); + buffer.write(_renderExtensionType_partial_constructors_8(context2)); buffer.write('\n '); - buffer.write(_renderExtensionType_partial_instance_fields_8(context2)); + buffer.write(_renderExtensionType_partial_instance_fields_9(context2)); buffer.write('\n '); - buffer.write(_renderExtensionType_partial_instance_methods_9(context2)); + buffer.write(_renderExtensionType_partial_instance_methods_10(context2)); buffer.write('\n '); - buffer.write(_renderExtensionType_partial_instance_operators_10(context2)); + buffer.write(_renderExtensionType_partial_instance_operators_11(context2)); buffer.write('\n '); - buffer.write(_renderExtensionType_partial_static_properties_11(context2)); + buffer.write(_renderExtensionType_partial_static_properties_12(context2)); buffer.write('\n '); - buffer.write(_renderExtensionType_partial_static_methods_12(context2)); + buffer.write(_renderExtensionType_partial_static_methods_13(context2)); buffer.write('\n '); - buffer.write(_renderExtensionType_partial_static_constants_13(context2)); + buffer.write(_renderExtensionType_partial_static_constants_14(context2)); buffer.writeln(); buffer.writeln(); buffer.write(''' @@ -847,7 +835,7 @@ String renderExtensionType( '''); - buffer.write(_renderExtensionType_partial_footer_15(context0)); + buffer.write(_renderExtensionType_partial_footer_16(context0)); buffer.writeln(); return buffer.toString(); @@ -1461,7 +1449,7 @@ String renderMixin(MixinTemplateData context0) { if (context2.hasPublicSuperclassConstraints) { buffer.writeln(); buffer.write(''' -
Superclass Constraints
+
Superclass constraints
    '''); var context3 = context2.publicSuperclassConstraints; for (var context4 in context3) { @@ -1483,7 +1471,7 @@ String renderMixin(MixinTemplateData context0) { if (context2.hasPublicImplementers) { buffer.writeln(); buffer.write(''' -
    Mixin Applications
    +
    Mixin applications
      '''); var context5 = context2.publicImplementersSorted; @@ -1499,32 +1487,34 @@ String renderMixin(MixinTemplateData context0) {
    '''); } + buffer.write('\n '); + buffer.write(_renderMixin_partial_available_extensions_7(context2)); buffer.write('\n\n '); - buffer.write(_renderMixin_partial_annotations_7(context2)); + buffer.write(_renderMixin_partial_annotations_8(context2)); buffer.writeln(); buffer.write(''' '''); } buffer.write('\n\n '); - buffer.write(_renderMixin_partial_instance_fields_8(context2)); + buffer.write(_renderMixin_partial_instance_fields_9(context2)); buffer.write('\n '); - buffer.write(_renderMixin_partial_instance_methods_9(context2)); + buffer.write(_renderMixin_partial_instance_methods_10(context2)); buffer.write('\n '); - buffer.write(_renderMixin_partial_instance_operators_10(context2)); + buffer.write(_renderMixin_partial_instance_operators_11(context2)); buffer.write('\n '); - buffer.write(_renderMixin_partial_static_properties_11(context2)); + buffer.write(_renderMixin_partial_static_properties_12(context2)); buffer.write('\n '); - buffer.write(_renderMixin_partial_static_methods_12(context2)); + buffer.write(_renderMixin_partial_static_methods_13(context2)); buffer.write('\n '); - buffer.write(_renderMixin_partial_static_constants_13(context2)); + buffer.write(_renderMixin_partial_static_constants_14(context2)); buffer.writeln(); buffer.write(''' '''); - buffer.write(_renderMixin_partial_footer_15(context0)); + buffer.write(_renderMixin_partial_footer_16(context0)); buffer.writeln(); return buffer.toString(); @@ -2567,7 +2557,7 @@ String _renderClass_partial_mixed_in_types_7(Class context1) { if (context1.hasPublicMixedInTypes) { buffer.writeln(); buffer.write(''' -
    Mixed in types
    +
    Mixed-in types
    {{ /hasPublicImplementers }} + {{ >available_extensions }} {{ >container_annotations }} diff --git a/lib/templates/mixin.html b/lib/templates/mixin.html index 31bffe350e..7ab78e3818 100644 --- a/lib/templates/mixin.html +++ b/lib/templates/mixin.html @@ -16,7 +16,7 @@
    {{ #hasPublicSuperclassConstraints }} -
    Superclass Constraints
    +
    Superclass constraints
      {{ #publicSuperclassConstraints }}
    • {{{ linkedName }}}
    • @@ -28,7 +28,7 @@ {{ >interfaces }} {{ #hasPublicImplementers }} -
      Mixin Applications
      +
      Mixin applications
        {{ #publicImplementersSorted }} @@ -37,6 +37,7 @@
      {{ /hasPublicImplementers }} + {{ >available_extensions }} {{ >annotations }}
    diff --git a/test/templates/class_test.dart b/test/templates/class_test.dart index 84c0edf856..f57dd6c772 100644 --- a/test/templates/class_test.dart +++ b/test/templates/class_test.dart @@ -149,6 +149,21 @@ mixin M on _M {} ]); } + void test_availableExtensions_direct() async { + await createPackageWithLibrary(''' +class C {} +extension E on C {} +'''); + var baseLines = readLines(['lib', 'C-class.html']); + + baseLines.expectMainContentContainsAllInOrder([ + matches('
    Available extensions
    '), + matches('
      '), + matches('
    • E
    • '), + matches('
    '), + ]); + } + void test_constructor_named() async { await createPackageWithLibrary(''' class C { diff --git a/test/templates/enum_test.dart b/test/templates/enum_test.dart index ab30c295fb..7757950541 100644 --- a/test/templates/enum_test.dart +++ b/test/templates/enum_test.dart @@ -91,6 +91,8 @@ enum EnumWithDefaultConstructor { /// Doc comment for [six]. six; } + +extension Ext on E {} '''), ], resourceProvider: resourceProvider, @@ -158,13 +160,22 @@ enum EnumWithDefaultConstructor { expect( eLines, containsAllInOrder([ - matches('
    Mixed in types
    '), + matches('
    Mixed-in types
    '), matches('M' '<' 'T>'), ])); }); + test('enum page contains available extensions', () async { + expect( + eLines, + containsAllInOrder([ + matches('
    Available extensions
    '), + matches('E'), + ])); + }); + test('enum page contains annotations', () async { eLines.expectMainContentContainsAllInOrder([ matches('
    Annotations
    '), diff --git a/test/templates/extension_type_test.dart b/test/templates/extension_type_test.dart index 928c860eb1..5c9a7cb381 100644 --- a/test/templates/extension_type_test.dart +++ b/test/templates/extension_type_test.dart @@ -140,6 +140,21 @@ extension type Two(List it) implements One {} ]); } + void test_availableExtensions() async { + await createPackageWithLibrary(''' +extension type One(int it) {} +extension E on One {} +'''); + var htmlLines = readLines(['lib', 'One-extension-type.html']); + + htmlLines.expectMainContentContainsAllInOrder([ + matches('
    Available extensions
    '), + matches('
      '), + matches('
    • E
    • '), + matches('
    '), + ]); + } + void test_constructors() async { await createPackageWithLibrary(''' extension type One(int it) {