Skip to content

Commit 50c0e0b

Browse files
authored
Adjust hierarchy for correct usage in mustache. (#2370)
Adjust hierarchy for correct usage in mustache. * Declare that Container mixes in TypeParameters, as the two classes which extend Container each already mix it in, and _head.html relies on a Container having a `hasGenericParameters` getter. Adjust TemplateData for correct template usage. * `navLinksWithGenerics` must contain Containers, so that fields like `hasGenericParameters` are statically available. * TemplateData must have a `homepage` field as it is referenced in `_search_sidebar` template, so it must always be available. Additional minor changes to Category for debugging, and for use in templates.
1 parent f06af8b commit 50c0e0b

File tree

5 files changed

+11
-10
lines changed

5 files changed

+11
-10
lines changed

lib/src/generator/template_data.dart

+7-4
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ abstract class TemplateData<T extends Documentable> {
2121
String get metaDescription;
2222

2323
List<Documentable> get navLinks;
24-
List<Documentable> get navLinksWithGenerics => [];
24+
List<Container> get navLinksWithGenerics => [];
2525
Documentable get parent {
2626
if (navLinksWithGenerics.isEmpty) {
2727
return navLinks.isNotEmpty ? navLinks.last : null;
@@ -33,6 +33,8 @@ abstract class TemplateData<T extends Documentable> {
3333

3434
bool get hasHomepage => false;
3535

36+
String get homepage => null;
37+
3638
String get htmlBase;
3739
T get self;
3840
String get version => htmlOptions.toolVersion;
@@ -73,6 +75,7 @@ class PackageTemplateData extends TemplateData<Package> {
7375

7476
@override
7577
bool get hasHomepage => package.hasHomepage;
78+
@override
7679
String get homepage => package.homepage;
7780

7881
/// empty for packages because they are at the root – not needed
@@ -235,7 +238,7 @@ class ConstructorTemplateData extends TemplateData<Constructor> {
235238
@override
236239
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
237240
@override
238-
List<Documentable> get navLinksWithGenerics => [clazz];
241+
List<Container> get navLinksWithGenerics => [clazz];
239242
@override
240243
@override
241244
String get htmlBase => '../../';
@@ -313,7 +316,7 @@ class MethodTemplateData extends TemplateData<Method> {
313316
@override
314317
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
315318
@override
316-
List<Documentable> get navLinksWithGenerics => [container];
319+
List<Container> get navLinksWithGenerics => [container];
317320
@override
318321
String get htmlBase => '../../';
319322
}
@@ -347,7 +350,7 @@ class PropertyTemplateData extends TemplateData<Field> {
347350
@override
348351
List<Documentable> get navLinks => [packageGraph.defaultPackage, library];
349352
@override
350-
List<Documentable> get navLinksWithGenerics => [container];
353+
List<Container> get navLinksWithGenerics => [container];
351354
@override
352355
String get htmlBase => '../../';
353356
}

lib/src/model/category.dart

+1-3
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class Category extends Nameable
8888
} else if (c is Extension) {
8989
_extensions.add(c);
9090
} else {
91-
throw UnimplementedError('Unrecognized element');
91+
throw UnimplementedError('Unrecognized element: $c (${c.runtimeType})');
9292
}
9393
}
9494

@@ -147,8 +147,6 @@ class Category extends Nameable
147147
@override
148148
String get href => isCanonical ? '${package.baseHref}$filePath' : null;
149149

150-
@Deprecated(
151-
'Public field is unused; will be removed as early as Dartdoc 1.0.0')
152150
String get categoryLabel => _categoryRenderer.renderCategoryLabel(this);
153151

154152
@Deprecated(

lib/src/model/class.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import 'package:meta/meta.dart';
1919
/// **instance**: As with [Container], but also includes inherited children.
2020
/// **inherited**: Filtered getters giving only inherited children.
2121
class Class extends Container
22-
with TypeParameters, Categorization, ExtensionTarget
22+
with Categorization, ExtensionTarget
2323
implements EnclosedElement {
2424
// TODO(srawlins): To make final, remove public getter, setter, rename to be
2525
// public, and add `final` modifier.

lib/src/model/container.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import 'package:meta/meta.dart';
2727
/// **has** : boolean getters indicating whether the underlying getters are
2828
/// empty. Mostly for the templating system.
2929
/// **all** : Referring to all children.
30-
abstract class Container extends ModelElement {
30+
abstract class Container extends ModelElement with TypeParameters {
3131
Container(Element element, Library library, PackageGraph packageGraph)
3232
: super(element, library, packageGraph, null);
3333

lib/src/model/extension.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import 'package:dartdoc/src/quiver.dart' as quiver;
1010

1111
/// Extension methods
1212
class Extension extends Container
13-
with TypeParameters, Categorization
13+
with Categorization
1414
implements EnclosedElement {
1515
ElementType extendedType;
1616

0 commit comments

Comments
 (0)