44
55import 'package:dartdoc/src/model/model.dart' ;
66
7+ typedef ContainerSidebar = String Function (Container , TemplateData );
8+ typedef LibrarySidebar = String Function (Library , TemplateData );
9+
710abstract class TemplateOptions {
811 String get relCanonicalPrefix;
912 String get toolVersion;
@@ -118,11 +121,13 @@ class CategoryTemplateData extends TemplateData<Category> {
118121
119122class LibraryTemplateData extends TemplateData <Library > {
120123 final Library library;
124+ final LibrarySidebar _sidebarForLibrary;
121125
122- LibraryTemplateData (
123- TemplateOptions htmlOptions, PackageGraph packageGraph, this .library )
126+ LibraryTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
127+ this .library, this ._sidebarForLibrary )
124128 : super (htmlOptions, packageGraph);
125129
130+ String get sidebarForLibrary => _sidebarForLibrary (library, this );
126131 @override
127132 String get title => '${library .name } library - Dart API' ;
128133 @override
@@ -145,9 +150,15 @@ class LibraryTemplateData extends TemplateData<Library> {
145150class MixinTemplateData extends ClassTemplateData <Mixin > {
146151 final Mixin mixin ;
147152
148- MixinTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
149- Library library, this .mixin )
150- : super (htmlOptions, packageGraph, library, mixin );
153+ MixinTemplateData (
154+ TemplateOptions htmlOptions,
155+ PackageGraph packageGraph,
156+ Library library,
157+ this .mixin ,
158+ LibrarySidebar _sidebarForLibrary,
159+ ContainerSidebar _sidebarForContainer)
160+ : super (htmlOptions, packageGraph, library, mixin , _sidebarForLibrary,
161+ _sidebarForContainer);
151162
152163 @override
153164 Mixin get self => mixin ;
@@ -158,11 +169,23 @@ class ClassTemplateData<T extends Class> extends TemplateData<T> {
158169 final Class clazz;
159170 final Library library;
160171 Class _objectType;
161-
162- ClassTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
163- this .library, this .clazz)
172+ final LibrarySidebar _sidebarForLibrary;
173+ final ContainerSidebar _sidebarForContainer;
174+
175+ ClassTemplateData (
176+ TemplateOptions htmlOptions,
177+ PackageGraph packageGraph,
178+ this .library,
179+ this .clazz,
180+ this ._sidebarForLibrary,
181+ this ._sidebarForContainer)
164182 : super (htmlOptions, packageGraph);
165183
184+ String get sidebarForLibrary => _sidebarForLibrary (library, this );
185+ String get sidebarForContainer => _sidebarForContainer (container, this );
186+
187+ Container get container => clazz;
188+
166189 @override
167190 T get self => clazz;
168191 String get linkedObjectType =>
@@ -199,11 +222,23 @@ class ClassTemplateData<T extends Class> extends TemplateData<T> {
199222class ExtensionTemplateData <T extends Extension > extends TemplateData <T > {
200223 final T extension ;
201224 final Library library;
202-
203- ExtensionTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
204- this .library, this .extension )
225+ final ContainerSidebar _sidebarForContainer;
226+ final LibrarySidebar _sidebarForLibrary;
227+
228+ ExtensionTemplateData (
229+ TemplateOptions htmlOptions,
230+ PackageGraph packageGraph,
231+ this .library,
232+ this .extension ,
233+ this ._sidebarForLibrary,
234+ this ._sidebarForContainer)
205235 : super (htmlOptions, packageGraph);
206236
237+ String get sidebarForContainer => _sidebarForContainer (container, this );
238+ String get sidebarForLibrary => _sidebarForLibrary (library, this );
239+
240+ Container get container => extension ;
241+
207242 @override
208243 T get self => extension ;
209244
@@ -227,11 +262,20 @@ class ConstructorTemplateData extends TemplateData<Constructor> {
227262 final Library library;
228263 final Class clazz;
229264 final Constructor constructor;
230-
231- ConstructorTemplateData (TemplateOptions htmlOptions,
232- PackageGraph packageGraph, this .library, this .clazz, this .constructor)
265+ final ContainerSidebar _sidebarForContainer;
266+
267+ ConstructorTemplateData (
268+ TemplateOptions htmlOptions,
269+ PackageGraph packageGraph,
270+ this .library,
271+ this .clazz,
272+ this .constructor,
273+ this ._sidebarForContainer)
233274 : super (htmlOptions, packageGraph);
234275
276+ String get sidebarForContainer => _sidebarForContainer (container, this );
277+
278+ Container get container => clazz;
235279 @override
236280 Constructor get self => constructor;
237281 @override
@@ -255,9 +299,15 @@ class ConstructorTemplateData extends TemplateData<Constructor> {
255299}
256300
257301class EnumTemplateData extends ClassTemplateData <Enum > {
258- EnumTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
259- Library library, Enum eNum)
260- : super (htmlOptions, packageGraph, library, eNum);
302+ EnumTemplateData (
303+ TemplateOptions htmlOptions,
304+ PackageGraph packageGraph,
305+ Library library,
306+ Enum eNum,
307+ LibrarySidebar _sidebarForLibrary,
308+ ContainerSidebar _sidebarForContainer)
309+ : super (htmlOptions, packageGraph, library, eNum, _sidebarForLibrary,
310+ _sidebarForContainer);
261311
262312 Enum get eNum => clazz;
263313 @override
@@ -267,11 +317,14 @@ class EnumTemplateData extends ClassTemplateData<Enum> {
267317class FunctionTemplateData extends TemplateData <ModelFunction > {
268318 final ModelFunction function;
269319 final Library library;
320+ final LibrarySidebar _sidebarForLibrary;
270321
271322 FunctionTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
272- this .library, this .function)
323+ this .library, this .function, this ._sidebarForLibrary )
273324 : super (htmlOptions, packageGraph);
274325
326+ String get sidebarForLibrary => _sidebarForLibrary (library, this );
327+
275328 @override
276329 ModelFunction get self => function;
277330 @override
@@ -294,14 +347,18 @@ class MethodTemplateData extends TemplateData<Method> {
294347 final Library library;
295348 final Method method;
296349 final Container container;
350+ final ContainerSidebar _sidebarForContainer;
351+
297352 String containerDesc;
298353
299354 MethodTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
300- this .library, this .container, this .method)
355+ this .library, this .container, this .method, this ._sidebarForContainer )
301356 : super (htmlOptions, packageGraph) {
302357 containerDesc = container.isClass ? 'class' : 'extension' ;
303358 }
304359
360+ String get sidebarForContainer => _sidebarForContainer (container, this );
361+
305362 @override
306363 Method get self => method;
307364 @override
@@ -327,14 +384,17 @@ class PropertyTemplateData extends TemplateData<Field> {
327384 final Library library;
328385 final Container container;
329386 final Field property;
387+ final ContainerSidebar _sidebarForContainer;
330388 String containerDesc;
331389
332390 PropertyTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
333- this .library, this .container, this .property)
391+ this .library, this .container, this .property, this ._sidebarForContainer )
334392 : super (htmlOptions, packageGraph) {
335393 containerDesc = container.isClass ? 'class' : 'extension' ;
336394 }
337395
396+ String get sidebarForContainer => _sidebarForContainer (container, this );
397+
338398 @override
339399 Field get self => property;
340400
@@ -360,11 +420,14 @@ class PropertyTemplateData extends TemplateData<Field> {
360420class TypedefTemplateData extends TemplateData <Typedef > {
361421 final Library library;
362422 final Typedef typeDef;
423+ final LibrarySidebar _sidebarForLibrary;
363424
364425 TypedefTemplateData (TemplateOptions htmlOptions, PackageGraph packageGraph,
365- this .library, this .typeDef)
426+ this .library, this .typeDef, this ._sidebarForLibrary )
366427 : super (htmlOptions, packageGraph);
367428
429+ String get sidebarForLibrary => _sidebarForLibrary (library, this );
430+
368431 @override
369432 Typedef get self => typeDef;
370433
@@ -387,11 +450,18 @@ class TypedefTemplateData extends TemplateData<Typedef> {
387450class TopLevelPropertyTemplateData extends TemplateData <TopLevelVariable > {
388451 final Library library;
389452 final TopLevelVariable property;
390-
391- TopLevelPropertyTemplateData (TemplateOptions htmlOptions,
392- PackageGraph packageGraph, this .library, this .property)
453+ final LibrarySidebar _sidebarForLibrary;
454+
455+ TopLevelPropertyTemplateData (
456+ TemplateOptions htmlOptions,
457+ PackageGraph packageGraph,
458+ this .library,
459+ this .property,
460+ this ._sidebarForLibrary)
393461 : super (htmlOptions, packageGraph);
394462
463+ String get sidebarForLibrary => _sidebarForLibrary (library, this );
464+
395465 @override
396466 TopLevelVariable get self => property;
397467
0 commit comments