4
4
5
5
import 'package:dartdoc/src/model/model.dart' ;
6
6
7
- typedef ContainerSidebar = String Function (Container , TemplateData );
8
- typedef LibrarySidebar = String Function (Library , TemplateData );
7
+ typedef ContainerSidebar = String Function (
8
+ Container , TemplateDataWithContainer );
9
+ typedef LibrarySidebar = String Function (Library , TemplateDataWithLibrary );
9
10
10
11
abstract class TemplateOptions {
11
12
String get relCanonicalPrefix;
@@ -62,6 +63,20 @@ abstract class TemplateData<T extends Documentable> {
62
63
.composeLayoutTitle (name, kind, isDeprecated);
63
64
}
64
65
66
+ /// A [TemplateData] which contains a library, for rendering the
67
+ /// sidebar-for-library.
68
+ abstract class TemplateDataWithLibrary <T extends Documentable >
69
+ implements TemplateData <T > {
70
+ Library get library;
71
+ }
72
+
73
+ /// A [TemplateData] which contains a container, for rendering the
74
+ /// sidebar-for-container.
75
+ abstract class TemplateDataWithContainer <T extends Documentable >
76
+ implements TemplateData <T > {
77
+ Container get container;
78
+ }
79
+
65
80
class PackageTemplateData extends TemplateData <Package > {
66
81
final Package package;
67
82
PackageTemplateData (
@@ -119,7 +134,9 @@ class CategoryTemplateData extends TemplateData<Category> {
119
134
Category get self => category;
120
135
}
121
136
122
- class LibraryTemplateData extends TemplateData <Library > {
137
+ class LibraryTemplateData extends TemplateData <Library >
138
+ implements TemplateDataWithLibrary <Library > {
139
+ @override
123
140
final Library library;
124
141
final LibrarySidebar _sidebarForLibrary;
125
142
@@ -165,8 +182,10 @@ class MixinTemplateData extends ClassTemplateData<Mixin> {
165
182
}
166
183
167
184
/// Base template data class for [Class] , [Enum] , and [Mixin] .
168
- class ClassTemplateData <T extends Class > extends TemplateData <T > {
185
+ class ClassTemplateData <T extends Class > extends TemplateData <T >
186
+ implements TemplateDataWithLibrary <T >, TemplateDataWithContainer <T > {
169
187
final Class clazz;
188
+ @override
170
189
final Library library;
171
190
Class _objectType;
172
191
final LibrarySidebar _sidebarForLibrary;
@@ -184,6 +203,7 @@ class ClassTemplateData<T extends Class> extends TemplateData<T> {
184
203
String get sidebarForLibrary => _sidebarForLibrary (library, this );
185
204
String get sidebarForContainer => _sidebarForContainer (container, this );
186
205
206
+ @override
187
207
Container get container => clazz;
188
208
189
209
@override
@@ -219,8 +239,10 @@ class ClassTemplateData<T extends Class> extends TemplateData<T> {
219
239
}
220
240
221
241
/// Base template data class for [Extension] .
222
- class ExtensionTemplateData <T extends Extension > extends TemplateData <T > {
242
+ class ExtensionTemplateData <T extends Extension > extends TemplateData <T >
243
+ implements TemplateDataWithLibrary <T >, TemplateDataWithContainer <T > {
223
244
final T extension ;
245
+ @override
224
246
final Library library;
225
247
final ContainerSidebar _sidebarForContainer;
226
248
final LibrarySidebar _sidebarForLibrary;
@@ -237,6 +259,7 @@ class ExtensionTemplateData<T extends Extension> extends TemplateData<T> {
237
259
String get sidebarForContainer => _sidebarForContainer (container, this );
238
260
String get sidebarForLibrary => _sidebarForLibrary (library, this );
239
261
262
+ @override
240
263
Container get container => extension ;
241
264
242
265
@override
@@ -258,7 +281,11 @@ class ExtensionTemplateData<T extends Extension> extends TemplateData<T> {
258
281
String get htmlBase => '../' ;
259
282
}
260
283
261
- class ConstructorTemplateData extends TemplateData <Constructor > {
284
+ class ConstructorTemplateData extends TemplateData <Constructor >
285
+ implements
286
+ TemplateDataWithLibrary <Constructor >,
287
+ TemplateDataWithContainer <Constructor > {
288
+ @override
262
289
final Library library;
263
290
final Class clazz;
264
291
final Constructor constructor;
@@ -275,6 +302,7 @@ class ConstructorTemplateData extends TemplateData<Constructor> {
275
302
276
303
String get sidebarForContainer => _sidebarForContainer (container, this );
277
304
305
+ @override
278
306
Container get container => clazz;
279
307
@override
280
308
Constructor get self => constructor;
@@ -314,8 +342,10 @@ class EnumTemplateData extends ClassTemplateData<Enum> {
314
342
Enum get self => eNum;
315
343
}
316
344
317
- class FunctionTemplateData extends TemplateData <ModelFunction > {
345
+ class FunctionTemplateData extends TemplateData <ModelFunction >
346
+ implements TemplateDataWithLibrary <ModelFunction > {
318
347
final ModelFunction function;
348
+ @override
319
349
final Library library;
320
350
final LibrarySidebar _sidebarForLibrary;
321
351
@@ -343,9 +373,14 @@ class FunctionTemplateData extends TemplateData<ModelFunction> {
343
373
String get htmlBase => '../' ;
344
374
}
345
375
346
- class MethodTemplateData extends TemplateData <Method > {
376
+ class MethodTemplateData extends TemplateData <Method >
377
+ implements
378
+ TemplateDataWithLibrary <Method >,
379
+ TemplateDataWithContainer <Method > {
380
+ @override
347
381
final Library library;
348
382
final Method method;
383
+ @override
349
384
final Container container;
350
385
final ContainerSidebar _sidebarForContainer;
351
386
@@ -380,8 +415,13 @@ class MethodTemplateData extends TemplateData<Method> {
380
415
String get htmlBase => '../../' ;
381
416
}
382
417
383
- class PropertyTemplateData extends TemplateData <Field > {
418
+ class PropertyTemplateData extends TemplateData <Field >
419
+ implements
420
+ TemplateDataWithLibrary <Field >,
421
+ TemplateDataWithContainer <Field > {
422
+ @override
384
423
final Library library;
424
+ @override
385
425
final Container container;
386
426
final Field property;
387
427
final ContainerSidebar _sidebarForContainer;
@@ -417,7 +457,9 @@ class PropertyTemplateData extends TemplateData<Field> {
417
457
String get htmlBase => '../../' ;
418
458
}
419
459
420
- class TypedefTemplateData extends TemplateData <Typedef > {
460
+ class TypedefTemplateData extends TemplateData <Typedef >
461
+ implements TemplateDataWithLibrary <Typedef > {
462
+ @override
421
463
final Library library;
422
464
final Typedef typeDef;
423
465
final LibrarySidebar _sidebarForLibrary;
@@ -447,7 +489,9 @@ class TypedefTemplateData extends TemplateData<Typedef> {
447
489
String get htmlBase => '../' ;
448
490
}
449
491
450
- class TopLevelPropertyTemplateData extends TemplateData <TopLevelVariable > {
492
+ class TopLevelPropertyTemplateData extends TemplateData <TopLevelVariable >
493
+ implements TemplateDataWithLibrary <TopLevelVariable > {
494
+ @override
451
495
final Library library;
452
496
final TopLevelVariable property;
453
497
final LibrarySidebar _sidebarForLibrary;
0 commit comments