Refactor templates for extensions (#2015)
* rename refactor template data
* Add a test
diff --git a/lib/src/html/template_data.dart b/lib/src/html/template_data.dart
index 271ce70..7f25e2a 100644
--- a/lib/src/html/template_data.dart
+++ b/lib/src/html/template_data.dart
@@ -283,64 +283,64 @@
class MethodTemplateData extends TemplateData<Method> {
final Library library;
final Method method;
- final Container clazz;
- String container;
+ final Container container;
+ String containerDesc;
MethodTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- this.library, this.clazz, this.method)
+ this.library, this.container, this.method)
: super(htmlOptions, packageGraph) {
- container = clazz.isClass ? 'class' : 'extension';
+ containerDesc = container.isClass ? 'class' : 'extension';
}
@override
Method get self => method;
@override
- String get title => '${method.name} method - ${clazz.name} ${container} - '
+ String get title => '${method.name} method - ${container.name} ${containerDesc} - '
'${library.name} library - Dart API';
@override
String get layoutTitle => _layoutTitle(
method.nameWithGenerics, method.fullkind, method.isDeprecated);
@override
String get metaDescription =>
- 'API docs for the ${method.name} method from the ${clazz.name} ${container}, '
+ 'API docs for the ${method.name} method from the ${container.name} ${containerDesc}, '
'for the Dart programming language.';
@override
List get navLinks => [packageGraph.defaultPackage, library];
@override
- List get navLinksWithGenerics => [clazz];
+ List get navLinksWithGenerics => [container];
@override
String get htmlBase => '../..';
}
class PropertyTemplateData extends TemplateData<Field> {
final Library library;
- final Container clazz;
+ final Container container;
final Field property;
- String container;
+ String containerDesc;
PropertyTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- this.library, this.clazz, this.property)
+ this.library, this.container, this.property)
: super(htmlOptions, packageGraph) {
- container = clazz.isClass ? 'class' : 'extension';
+ containerDesc = container.isClass ? 'class' : 'extension';
}
@override
Field get self => property;
@override
- String get title => '${property.name} $type - ${clazz.name} ${container} - '
+ String get title => '${property.name} $type - ${container.name} ${containerDesc} - '
'${library.name} library - Dart API';
@override
String get layoutTitle =>
_layoutTitle(property.name, type, property.isDeprecated);
@override
String get metaDescription =>
- 'API docs for the ${property.name} $type from the ${clazz.name} ${container}, '
+ 'API docs for the ${property.name} $type from the ${container.name} ${containerDesc}, '
'for the Dart programming language.';
@override
List get navLinks => [packageGraph.defaultPackage, library];
@override
- List get navLinksWithGenerics => [clazz];
+ List get navLinksWithGenerics => [container];
@override
String get htmlBase => '../..';
@@ -349,8 +349,8 @@
class ConstantTemplateData extends PropertyTemplateData {
ConstantTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
- Library library, Container clazz, Field property)
- : super(htmlOptions, packageGraph, library, clazz, property);
+ Library library, Container container, Field property)
+ : super(htmlOptions, packageGraph, library, container, property);
@override
String get type => 'constant';
diff --git a/lib/src/html/templates.dart b/lib/src/html/templates.dart
index aa78da0..a47efde 100644
--- a/lib/src/html/templates.dart
+++ b/lib/src/html/templates.dart
@@ -31,6 +31,7 @@
'search_sidebar',
'sidebar_for_class',
'sidebar_for_category',
+ 'sidebar_for_container',
'sidebar_for_enum',
'sidebar_for_extension',
'source_code',
diff --git a/lib/templates/_sidebar_for_class.html b/lib/templates/_sidebar_for_class.html
index d0b1bb0..662ec17 100644
--- a/lib/templates/_sidebar_for_class.html
+++ b/lib/templates/_sidebar_for_class.html
@@ -1,7 +1,6 @@
<ol>
{{#clazz}}
- {{#isClass}}
{{#hasPublicConstructors}}
<li class="section-title"><a href="{{{href}}}#constructors">Constructors</a></li>
{{#publicConstructors}}
@@ -52,52 +51,6 @@
<li>{{{linkedName}}}</li>
{{/publicConstants}}
{{/hasPublicConstants}}
- {{/isClass}}
-
- {{#isExtension}}
- {{#hasPublicProperties}}
- <li class="section-title"> <a href="{{{href}}}#instance-properties">Properties</a>
- </li>
- {{#allPublicInstanceProperties}}
- <li>{{{ linkedName }}}</li>
- {{/allPublicInstanceProperties}}
- {{/hasPublicProperties}}
-
- {{#hasPublicMethods}}
- <li class="section-title"><a href="{{{href}}}#instance-methods">Methods</a></li>
- {{#allPublicInstanceMethods}}
- <li>{{{ linkedName }}}</li>
- {{/allPublicInstanceMethods}}
- {{/hasPublicMethods}}
-
- {{#hasPublicOperators}}
- <li class="section-title"><a href="{{{href}}}#operators">Operators</a></li>
- {{#allPublicOperators}}
- <li>{{{ linkedName }}}</li>
- {{/allPublicOperators}}
- {{/hasPublicOperators}}
-
- {{#hasPublicStaticProperties}}
- <li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
- {{#publicStaticProperties}}
- <li>{{{ linkedName }}}</li>
- {{/publicStaticProperties}}
- {{/hasPublicStaticProperties}}
-
- {{#hasPublicStaticMethods}}
- <li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
- {{#publicStaticMethods}}
- <li>{{{ linkedName }}}</li>
- {{/publicStaticMethods}}
- {{/hasPublicStaticMethods}}
-
- {{#hasPublicConstants}}
- <li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
- {{#publicConstants}}
- <li>{{{linkedName}}}</li>
- {{/publicConstants}}
- {{/hasPublicConstants}}
- {{/isExtension}}
{{/clazz}}
</ol>
diff --git a/lib/templates/_sidebar_for_container.html b/lib/templates/_sidebar_for_container.html
new file mode 100644
index 0000000..3c3b316
--- /dev/null
+++ b/lib/templates/_sidebar_for_container.html
@@ -0,0 +1,103 @@
+<ol>
+ {{#container}}
+
+ {{#isClass}}
+ {{#hasPublicConstructors}}
+ <li class="section-title"><a href="{{{href}}}#constructors">Constructors</a></li>
+ {{#publicConstructors}}
+ <li><a{{#isDeprecated}} class="deprecated"{{/isDeprecated}} href="{{{href}}}">{{shortName}}</a></li>
+ {{/publicConstructors}}
+ {{/hasPublicConstructors}}
+
+ {{#hasPublicProperties}}
+ <li class="section-title{{ #allPublicInstancePropertiesInherited }} inherited{{ /allPublicInstancePropertiesInherited }}">
+ <a href="{{{href}}}#instance-properties">Properties</a>
+ </li>
+ {{#allPublicInstanceProperties}}
+ <li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
+ {{/allPublicInstanceProperties}}
+ {{/hasPublicProperties}}
+
+ {{#hasPublicMethods}}
+ <li class="section-title{{ #allPublicInstanceMethodsInherited }} inherited{{ /allPublicInstanceMethodsInherited }}"><a href="{{{href}}}#instance-methods">Methods</a></li>
+ {{#allPublicInstanceMethods}}
+ <li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
+ {{/allPublicInstanceMethods}}
+ {{/hasPublicMethods}}
+
+ {{#hasPublicOperators}}
+ <li class="section-title{{ #allPublicOperatorsInherited }} inherited{{ /allPublicOperatorsInherited}}"><a href="{{{href}}}#operators">Operators</a></li>
+ {{#allPublicOperators}}
+ <li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
+ {{/allPublicOperators}}
+ {{/hasPublicOperators}}
+
+ {{#hasPublicStaticProperties}}
+ <li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
+ {{#publicStaticProperties}}
+ <li>{{{ linkedName }}}</li>
+ {{/publicStaticProperties}}
+ {{/hasPublicStaticProperties}}
+
+ {{#hasPublicStaticMethods}}
+ <li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
+ {{#publicStaticMethods}}
+ <li>{{{ linkedName }}}</li>
+ {{/publicStaticMethods}}
+ {{/hasPublicStaticMethods}}
+
+ {{#hasPublicConstants}}
+ <li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
+ {{#publicConstants}}
+ <li>{{{linkedName}}}</li>
+ {{/publicConstants}}
+ {{/hasPublicConstants}}
+ {{/isClass}}
+
+ {{#isExtension}}
+ {{#hasPublicProperties}}
+ <li class="section-title"> <a href="{{{href}}}#instance-properties">Properties</a>
+ </li>
+ {{#allPublicInstanceProperties}}
+ <li>{{{ linkedName }}}</li>
+ {{/allPublicInstanceProperties}}
+ {{/hasPublicProperties}}
+
+ {{#hasPublicMethods}}
+ <li class="section-title"><a href="{{{href}}}#instance-methods">Methods</a></li>
+ {{#allPublicInstanceMethods}}
+ <li>{{{ linkedName }}}</li>
+ {{/allPublicInstanceMethods}}
+ {{/hasPublicMethods}}
+
+ {{#hasPublicOperators}}
+ <li class="section-title"><a href="{{{href}}}#operators">Operators</a></li>
+ {{#allPublicOperators}}
+ <li>{{{ linkedName }}}</li>
+ {{/allPublicOperators}}
+ {{/hasPublicOperators}}
+
+ {{#hasPublicStaticProperties}}
+ <li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
+ {{#publicStaticProperties}}
+ <li>{{{ linkedName }}}</li>
+ {{/publicStaticProperties}}
+ {{/hasPublicStaticProperties}}
+
+ {{#hasPublicStaticMethods}}
+ <li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
+ {{#publicStaticMethods}}
+ <li>{{{ linkedName }}}</li>
+ {{/publicStaticMethods}}
+ {{/hasPublicStaticMethods}}
+
+ {{#hasPublicConstants}}
+ <li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
+ {{#publicConstants}}
+ <li>{{{linkedName}}}</li>
+ {{/publicConstants}}
+ {{/hasPublicConstants}}
+ {{/isExtension}}
+
+ {{/container}}
+</ol>
diff --git a/lib/templates/constant.html b/lib/templates/constant.html
index 44e278b..5248e7d 100644
--- a/lib/templates/constant.html
+++ b/lib/templates/constant.html
@@ -3,7 +3,7 @@
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
{{>search_sidebar}}
<h5>{{parent.name}} {{parent.kind}}</h5>
- {{>sidebar_for_class}}
+ {{>sidebar_for_container}}
</div><!--/.sidebar-offcanvas-left-->
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
diff --git a/lib/templates/method.html b/lib/templates/method.html
index 0d1fb44..d88bc73 100644
--- a/lib/templates/method.html
+++ b/lib/templates/method.html
@@ -3,7 +3,7 @@
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
{{>search_sidebar}}
<h5>{{parent.name}} {{parent.kind}}</h5>
- {{>sidebar_for_class}}
+ {{>sidebar_for_container}}
</div><!--/.sidebar-offcanvas-->
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
diff --git a/lib/templates/property.html b/lib/templates/property.html
index 8d9bb5e..1372a37 100644
--- a/lib/templates/property.html
+++ b/lib/templates/property.html
@@ -3,7 +3,7 @@
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
{{>search_sidebar}}
<h5>{{parent.name}} {{parent.kind}}</h5>
- {{>sidebar_for_class}}
+ {{>sidebar_for_container}}
</div><!--/.sidebar-offcanvas-->
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
diff --git a/test/model_test.dart b/test/model_test.dart
index 10e4364..dbc6257 100644
--- a/test/model_test.dart
+++ b/test/model_test.dart
@@ -2134,6 +2134,13 @@
'FancyList<<wbr><span class="type-parameter">Z</span>>'));
});
+ test('extended type has generics', () {
+ expect(
+ fancyList.extendedType.nameWithGenerics,
+ equals(
+ 'List<<wbr><span class="type-parameter">Z</span>>'));
+ });
+
test('get methods', () {
expect(fancyList.allPublicInstanceMethods, hasLength(1));
});