Skip to content

Commit f7bcb20

Browse files
authored
Refactor templates for extensions (#2015)
* rename refactor template data * Add a test
1 parent 6934acc commit f7bcb20

File tree

8 files changed

+130
-66
lines changed

8 files changed

+130
-66
lines changed

lib/src/html/template_data.dart

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -283,64 +283,64 @@ class FunctionTemplateData extends TemplateData<ModelFunction> {
283283
class MethodTemplateData extends TemplateData<Method> {
284284
final Library library;
285285
final Method method;
286-
final Container clazz;
287-
String container;
286+
final Container container;
287+
String containerDesc;
288288

289289
MethodTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
290-
this.library, this.clazz, this.method)
290+
this.library, this.container, this.method)
291291
: super(htmlOptions, packageGraph) {
292-
container = clazz.isClass ? 'class' : 'extension';
292+
containerDesc = container.isClass ? 'class' : 'extension';
293293
}
294294

295295
@override
296296
Method get self => method;
297297
@override
298-
String get title => '${method.name} method - ${clazz.name} ${container} - '
298+
String get title => '${method.name} method - ${container.name} ${containerDesc} - '
299299
'${library.name} library - Dart API';
300300
@override
301301
String get layoutTitle => _layoutTitle(
302302
method.nameWithGenerics, method.fullkind, method.isDeprecated);
303303
@override
304304
String get metaDescription =>
305-
'API docs for the ${method.name} method from the ${clazz.name} ${container}, '
305+
'API docs for the ${method.name} method from the ${container.name} ${containerDesc}, '
306306
'for the Dart programming language.';
307307
@override
308308
List get navLinks => [packageGraph.defaultPackage, library];
309309
@override
310-
List get navLinksWithGenerics => [clazz];
310+
List get navLinksWithGenerics => [container];
311311
@override
312312
String get htmlBase => '../..';
313313
}
314314

315315
class PropertyTemplateData extends TemplateData<Field> {
316316
final Library library;
317-
final Container clazz;
317+
final Container container;
318318
final Field property;
319-
String container;
319+
String containerDesc;
320320

321321
PropertyTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
322-
this.library, this.clazz, this.property)
322+
this.library, this.container, this.property)
323323
: super(htmlOptions, packageGraph) {
324-
container = clazz.isClass ? 'class' : 'extension';
324+
containerDesc = container.isClass ? 'class' : 'extension';
325325
}
326326

327327
@override
328328
Field get self => property;
329329

330330
@override
331-
String get title => '${property.name} $type - ${clazz.name} ${container} - '
331+
String get title => '${property.name} $type - ${container.name} ${containerDesc} - '
332332
'${library.name} library - Dart API';
333333
@override
334334
String get layoutTitle =>
335335
_layoutTitle(property.name, type, property.isDeprecated);
336336
@override
337337
String get metaDescription =>
338-
'API docs for the ${property.name} $type from the ${clazz.name} ${container}, '
338+
'API docs for the ${property.name} $type from the ${container.name} ${containerDesc}, '
339339
'for the Dart programming language.';
340340
@override
341341
List get navLinks => [packageGraph.defaultPackage, library];
342342
@override
343-
List get navLinksWithGenerics => [clazz];
343+
List get navLinksWithGenerics => [container];
344344
@override
345345
String get htmlBase => '../..';
346346

@@ -349,8 +349,8 @@ class PropertyTemplateData extends TemplateData<Field> {
349349

350350
class ConstantTemplateData extends PropertyTemplateData {
351351
ConstantTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
352-
Library library, Container clazz, Field property)
353-
: super(htmlOptions, packageGraph, library, clazz, property);
352+
Library library, Container container, Field property)
353+
: super(htmlOptions, packageGraph, library, container, property);
354354

355355
@override
356356
String get type => 'constant';

lib/src/html/templates.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const _partials = <String>[
3131
'search_sidebar',
3232
'sidebar_for_class',
3333
'sidebar_for_category',
34+
'sidebar_for_container',
3435
'sidebar_for_enum',
3536
'sidebar_for_extension',
3637
'source_code',

lib/templates/_sidebar_for_class.html

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<ol>
22
{{#clazz}}
33

4-
{{#isClass}}
54
{{#hasPublicConstructors}}
65
<li class="section-title"><a href="{{{href}}}#constructors">Constructors</a></li>
76
{{#publicConstructors}}
@@ -52,52 +51,6 @@
5251
<li>{{{linkedName}}}</li>
5352
{{/publicConstants}}
5453
{{/hasPublicConstants}}
55-
{{/isClass}}
56-
57-
{{#isExtension}}
58-
{{#hasPublicProperties}}
59-
<li class="section-title"> <a href="{{{href}}}#instance-properties">Properties</a>
60-
</li>
61-
{{#allPublicInstanceProperties}}
62-
<li>{{{ linkedName }}}</li>
63-
{{/allPublicInstanceProperties}}
64-
{{/hasPublicProperties}}
65-
66-
{{#hasPublicMethods}}
67-
<li class="section-title"><a href="{{{href}}}#instance-methods">Methods</a></li>
68-
{{#allPublicInstanceMethods}}
69-
<li>{{{ linkedName }}}</li>
70-
{{/allPublicInstanceMethods}}
71-
{{/hasPublicMethods}}
72-
73-
{{#hasPublicOperators}}
74-
<li class="section-title"><a href="{{{href}}}#operators">Operators</a></li>
75-
{{#allPublicOperators}}
76-
<li>{{{ linkedName }}}</li>
77-
{{/allPublicOperators}}
78-
{{/hasPublicOperators}}
79-
80-
{{#hasPublicStaticProperties}}
81-
<li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
82-
{{#publicStaticProperties}}
83-
<li>{{{ linkedName }}}</li>
84-
{{/publicStaticProperties}}
85-
{{/hasPublicStaticProperties}}
86-
87-
{{#hasPublicStaticMethods}}
88-
<li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
89-
{{#publicStaticMethods}}
90-
<li>{{{ linkedName }}}</li>
91-
{{/publicStaticMethods}}
92-
{{/hasPublicStaticMethods}}
93-
94-
{{#hasPublicConstants}}
95-
<li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
96-
{{#publicConstants}}
97-
<li>{{{linkedName}}}</li>
98-
{{/publicConstants}}
99-
{{/hasPublicConstants}}
100-
{{/isExtension}}
10154

10255
{{/clazz}}
10356
</ol>
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<ol>
2+
{{#container}}
3+
4+
{{#isClass}}
5+
{{#hasPublicConstructors}}
6+
<li class="section-title"><a href="{{{href}}}#constructors">Constructors</a></li>
7+
{{#publicConstructors}}
8+
<li><a{{#isDeprecated}} class="deprecated"{{/isDeprecated}} href="{{{href}}}">{{shortName}}</a></li>
9+
{{/publicConstructors}}
10+
{{/hasPublicConstructors}}
11+
12+
{{#hasPublicProperties}}
13+
<li class="section-title{{ #allPublicInstancePropertiesInherited }} inherited{{ /allPublicInstancePropertiesInherited }}">
14+
<a href="{{{href}}}#instance-properties">Properties</a>
15+
</li>
16+
{{#allPublicInstanceProperties}}
17+
<li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
18+
{{/allPublicInstanceProperties}}
19+
{{/hasPublicProperties}}
20+
21+
{{#hasPublicMethods}}
22+
<li class="section-title{{ #allPublicInstanceMethodsInherited }} inherited{{ /allPublicInstanceMethodsInherited }}"><a href="{{{href}}}#instance-methods">Methods</a></li>
23+
{{#allPublicInstanceMethods}}
24+
<li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
25+
{{/allPublicInstanceMethods}}
26+
{{/hasPublicMethods}}
27+
28+
{{#hasPublicOperators}}
29+
<li class="section-title{{ #allPublicOperatorsInherited }} inherited{{ /allPublicOperatorsInherited}}"><a href="{{{href}}}#operators">Operators</a></li>
30+
{{#allPublicOperators}}
31+
<li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
32+
{{/allPublicOperators}}
33+
{{/hasPublicOperators}}
34+
35+
{{#hasPublicStaticProperties}}
36+
<li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
37+
{{#publicStaticProperties}}
38+
<li>{{{ linkedName }}}</li>
39+
{{/publicStaticProperties}}
40+
{{/hasPublicStaticProperties}}
41+
42+
{{#hasPublicStaticMethods}}
43+
<li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
44+
{{#publicStaticMethods}}
45+
<li>{{{ linkedName }}}</li>
46+
{{/publicStaticMethods}}
47+
{{/hasPublicStaticMethods}}
48+
49+
{{#hasPublicConstants}}
50+
<li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
51+
{{#publicConstants}}
52+
<li>{{{linkedName}}}</li>
53+
{{/publicConstants}}
54+
{{/hasPublicConstants}}
55+
{{/isClass}}
56+
57+
{{#isExtension}}
58+
{{#hasPublicProperties}}
59+
<li class="section-title"> <a href="{{{href}}}#instance-properties">Properties</a>
60+
</li>
61+
{{#allPublicInstanceProperties}}
62+
<li>{{{ linkedName }}}</li>
63+
{{/allPublicInstanceProperties}}
64+
{{/hasPublicProperties}}
65+
66+
{{#hasPublicMethods}}
67+
<li class="section-title"><a href="{{{href}}}#instance-methods">Methods</a></li>
68+
{{#allPublicInstanceMethods}}
69+
<li>{{{ linkedName }}}</li>
70+
{{/allPublicInstanceMethods}}
71+
{{/hasPublicMethods}}
72+
73+
{{#hasPublicOperators}}
74+
<li class="section-title"><a href="{{{href}}}#operators">Operators</a></li>
75+
{{#allPublicOperators}}
76+
<li>{{{ linkedName }}}</li>
77+
{{/allPublicOperators}}
78+
{{/hasPublicOperators}}
79+
80+
{{#hasPublicStaticProperties}}
81+
<li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
82+
{{#publicStaticProperties}}
83+
<li>{{{ linkedName }}}</li>
84+
{{/publicStaticProperties}}
85+
{{/hasPublicStaticProperties}}
86+
87+
{{#hasPublicStaticMethods}}
88+
<li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
89+
{{#publicStaticMethods}}
90+
<li>{{{ linkedName }}}</li>
91+
{{/publicStaticMethods}}
92+
{{/hasPublicStaticMethods}}
93+
94+
{{#hasPublicConstants}}
95+
<li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
96+
{{#publicConstants}}
97+
<li>{{{linkedName}}}</li>
98+
{{/publicConstants}}
99+
{{/hasPublicConstants}}
100+
{{/isExtension}}
101+
102+
{{/container}}
103+
</ol>

lib/templates/constant.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
44
{{>search_sidebar}}
55
<h5>{{parent.name}} {{parent.kind}}</h5>
6-
{{>sidebar_for_class}}
6+
{{>sidebar_for_container}}
77
</div><!--/.sidebar-offcanvas-left-->
88

99
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">

lib/templates/method.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
44
{{>search_sidebar}}
55
<h5>{{parent.name}} {{parent.kind}}</h5>
6-
{{>sidebar_for_class}}
6+
{{>sidebar_for_container}}
77
</div><!--/.sidebar-offcanvas-->
88

99
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">

lib/templates/property.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
44
{{>search_sidebar}}
55
<h5>{{parent.name}} {{parent.kind}}</h5>
6-
{{>sidebar_for_class}}
6+
{{>sidebar_for_container}}
77
</div><!--/.sidebar-offcanvas-->
88

99
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">

test/model_test.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2134,6 +2134,13 @@ void main() {
21342134
'FancyList&lt;<wbr><span class="type-parameter">Z</span>&gt;'));
21352135
});
21362136

2137+
test('extended type has generics', () {
2138+
expect(
2139+
fancyList.extendedType.nameWithGenerics,
2140+
equals(
2141+
'List&lt;<wbr><span class="type-parameter">Z</span>&gt;'));
2142+
});
2143+
21372144
test('get methods', () {
21382145
expect(fancyList.allPublicInstanceMethods, hasLength(1));
21392146
});

0 commit comments

Comments
 (0)