22// for details. All rights reserved. Use of this source code is governed by a
33// BSD-style license that can be found in the LICENSE file.
44
5+ import 'package:analyzer/file_system/file_system.dart' ;
56import 'package:dartdoc/dartdoc.dart' ;
67import 'package:dartdoc/options.dart' ;
78import 'package:dartdoc/src/generator/generator_frontend.dart' ;
89import 'package:dartdoc/src/generator/generator_utils.dart' as generator_util;
910import 'package:dartdoc/src/generator/template_data.dart' ;
1011import 'package:dartdoc/src/generator/templates.dart' ;
11- import 'package:dartdoc/src/generator/templates.runtime_renderers.dart' ;
12- import 'package:dartdoc/src/mustachio/renderer_base.dart' ;
1312import 'package:dartdoc/src/warnings.dart' ;
1413import 'package:path/path.dart' as path show Context;
1514
@@ -60,16 +59,15 @@ class DartdocGeneratorBackendOptions implements TemplateOptions {
6059}
6160
6261class SidebarGenerator <T extends TemplateData > {
63- final Template template;
64- final RenderFunction <T > renderFunction;
62+ final String Function (T context) renderFunction;
6563 final Map <Documentable , String > _renderCache = {};
6664
67- SidebarGenerator (this .template, this . renderFunction);
65+ SidebarGenerator (this .renderFunction);
6866
6967 // Retrieve the render for a specific key, or generate it using the given
7068 // template data if you need.
7169 String getRenderFor (Documentable key, T templateData) {
72- return _renderCache[key] ?? = renderFunction (templateData, template );
70+ return _renderCache[key] ?? = renderFunction (templateData);
7371 }
7472}
7573
@@ -81,15 +79,16 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
8179 sidebarForLibrary;
8280 final SidebarGenerator <TemplateDataWithContainer <Documentable >>
8381 sidebarForContainer;
82+ final ResourceProvider resourceProvider;
8483 final path.Context _pathContext;
8584
86- DartdocGeneratorBackend (
87- DartdocGeneratorBackendOptions options, this .templates, this ._pathContext )
85+ DartdocGeneratorBackend (DartdocGeneratorBackendOptions options,
86+ this .templates, this .resourceProvider )
8887 : options = options ?? DartdocGeneratorBackendOptions ._defaults (),
89- sidebarForLibrary = SidebarGenerator (
90- templates.sidebarLibraryTemplate, renderSidebarForLibrary),
91- sidebarForContainer = SidebarGenerator (
92- templates.sidebarContainerTemplate, renderSidebarForContainer) ;
88+ sidebarForLibrary = SidebarGenerator (templates.renderSidebarForLibrary),
89+ sidebarForContainer =
90+ SidebarGenerator (templates.renderSidebarForContainer),
91+ _pathContext = resourceProvider.pathContext ;
9392
9493 /// Helper method to bind template data and emit the content to the writer.
9594 void write (
@@ -129,15 +128,15 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
129128 @override
130129 void generatePackage (FileWriter writer, PackageGraph graph, Package package) {
131130 TemplateData data = PackageTemplateData (options, graph, package);
132- var content = renderIndex (data, templates.indexTemplate );
131+ var content = templates. renderIndex (data);
133132 write (writer, package.filePath, data, content);
134133 }
135134
136135 @override
137136 void generateCategory (
138137 FileWriter writer, PackageGraph packageGraph, Category category) {
139138 TemplateData data = CategoryTemplateData (options, packageGraph, category);
140- var content = renderCategory (data, templates.categoryTemplate );
139+ var content = templates. renderCategory (data);
141140 write (writer, category.filePath, data, content);
142141 }
143142
@@ -146,7 +145,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
146145 FileWriter writer, PackageGraph packageGraph, Library lib) {
147146 TemplateData data = LibraryTemplateData (
148147 options, packageGraph, lib, sidebarForLibrary.getRenderFor);
149- var content = renderLibrary (data, templates.libraryTemplate );
148+ var content = templates. renderLibrary (data);
150149 write (writer, lib.filePath, data, content);
151150 }
152151
@@ -155,7 +154,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
155154 FileWriter writer, PackageGraph packageGraph, Library lib, Class clazz) {
156155 TemplateData data = ClassTemplateData (options, packageGraph, lib, clazz,
157156 sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
158- var content = renderClass (data, templates.classTemplate );
157+ var content = templates. renderClass (data);
159158 write (writer, clazz.filePath, data, content);
160159 }
161160
@@ -169,7 +168,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
169168 extension ,
170169 sidebarForLibrary.getRenderFor,
171170 sidebarForContainer.getRenderFor);
172- var content = renderExtension (data, templates.extensionTemplate );
171+ var content = templates. renderExtension (data);
173172 write (writer, extension .filePath, data, content);
174173 }
175174
@@ -178,7 +177,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
178177 FileWriter writer, PackageGraph packageGraph, Library lib, Mixin mixin ) {
179178 TemplateData data = MixinTemplateData (options, packageGraph, lib, mixin ,
180179 sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
181- var content = renderMixin (data, templates.mixinTemplate );
180+ var content = templates. renderMixin (data);
182181 write (writer, mixin .filePath, data, content);
183182 }
184183
@@ -187,7 +186,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
187186 Library lib, Class clazz, Constructor constructor) {
188187 TemplateData data = ConstructorTemplateData (options, packageGraph, lib,
189188 clazz, constructor, sidebarForContainer.getRenderFor);
190- var content = renderConstructor (data, templates.constructorTemplate );
189+ var content = templates. renderConstructor (data);
191190 write (writer, constructor.filePath, data, content);
192191 }
193192
@@ -196,7 +195,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
196195 FileWriter writer, PackageGraph packageGraph, Library lib, Enum eNum) {
197196 TemplateData data = EnumTemplateData (options, packageGraph, lib, eNum,
198197 sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
199- var content = renderEnum (data, templates.enumTemplate );
198+ var content = templates. renderEnum (data);
200199 write (writer, eNum.filePath, data, content);
201200 }
202201
@@ -205,7 +204,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
205204 Library lib, ModelFunction function) {
206205 TemplateData data = FunctionTemplateData (
207206 options, packageGraph, lib, function, sidebarForLibrary.getRenderFor);
208- var content = renderFunction (data, templates.functionTemplate );
207+ var content = templates. renderFunction (data);
209208 write (writer, function.filePath, data, content);
210209 }
211210
@@ -214,7 +213,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
214213 Container clazz, Method method) {
215214 TemplateData data = MethodTemplateData (options, packageGraph, lib, clazz,
216215 method, sidebarForContainer.getRenderFor);
217- var content = renderMethod (data, templates.methodTemplate );
216+ var content = templates. renderMethod (data);
218217 write (writer, method.filePath, data, content);
219218 }
220219
@@ -228,7 +227,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
228227 Library lib, Container clazz, Field property) {
229228 TemplateData data = PropertyTemplateData (options, packageGraph, lib, clazz,
230229 property, sidebarForContainer.getRenderFor);
231- var content = renderProperty (data, templates.propertyTemplate );
230+ var content = templates. renderProperty (data);
232231 write (writer, property.filePath, data, content);
233232 }
234233
@@ -237,8 +236,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
237236 Library lib, TopLevelVariable property) {
238237 TemplateData data = TopLevelPropertyTemplateData (
239238 options, packageGraph, lib, property, sidebarForLibrary.getRenderFor);
240- var content =
241- renderTopLevelProperty (data, templates.topLevelPropertyTemplate);
239+ var content = templates.renderTopLevelProperty (data);
242240 write (writer, property.filePath, data, content);
243241 }
244242
@@ -252,11 +250,10 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
252250 Library lib, Typedef typeDef) {
253251 TemplateData data = TypedefTemplateData (
254252 options, packageGraph, lib, typeDef, sidebarForLibrary.getRenderFor);
255- var content = renderTypedef (data, templates.typeDefTemplate );
253+ var content = templates. renderTypedef (data);
256254 write (writer, typeDef.filePath, data, content);
257255 }
258256
259257 @override
260- Future <void > generateAdditionalFiles (
261- FileWriter writer, PackageGraph graph) async {}
258+ Future <void > generateAdditionalFiles (FileWriter writer) async {}
262259}
0 commit comments