2
2
// for details. All rights reserved. Use of this source code is governed by a
3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
+ import 'package:analyzer/file_system/file_system.dart' ;
5
6
import 'package:dartdoc/dartdoc.dart' ;
6
7
import 'package:dartdoc/options.dart' ;
7
8
import 'package:dartdoc/src/generator/generator_frontend.dart' ;
8
9
import 'package:dartdoc/src/generator/generator_utils.dart' as generator_util;
9
10
import 'package:dartdoc/src/generator/template_data.dart' ;
10
11
import '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' ;
13
12
import 'package:dartdoc/src/warnings.dart' ;
14
13
import 'package:path/path.dart' as path show Context;
15
14
@@ -60,16 +59,15 @@ class DartdocGeneratorBackendOptions implements TemplateOptions {
60
59
}
61
60
62
61
class SidebarGenerator <T extends TemplateData > {
63
- final Template template;
64
- final RenderFunction <T > renderFunction;
62
+ final String Function (T context) renderFunction;
65
63
final Map <Documentable , String > _renderCache = {};
66
64
67
- SidebarGenerator (this .template, this . renderFunction);
65
+ SidebarGenerator (this .renderFunction);
68
66
69
67
// Retrieve the render for a specific key, or generate it using the given
70
68
// template data if you need.
71
69
String getRenderFor (Documentable key, T templateData) {
72
- return _renderCache[key] ?? = renderFunction (templateData, template );
70
+ return _renderCache[key] ?? = renderFunction (templateData);
73
71
}
74
72
}
75
73
@@ -81,15 +79,16 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
81
79
sidebarForLibrary;
82
80
final SidebarGenerator <TemplateDataWithContainer <Documentable >>
83
81
sidebarForContainer;
82
+ final ResourceProvider resourceProvider;
84
83
final path.Context _pathContext;
85
84
86
- DartdocGeneratorBackend (
87
- DartdocGeneratorBackendOptions options, this .templates, this ._pathContext )
85
+ DartdocGeneratorBackend (DartdocGeneratorBackendOptions options,
86
+ this .templates, this .resourceProvider )
88
87
: 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 ;
93
92
94
93
/// Helper method to bind template data and emit the content to the writer.
95
94
void write (
@@ -129,15 +128,15 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
129
128
@override
130
129
void generatePackage (FileWriter writer, PackageGraph graph, Package package) {
131
130
TemplateData data = PackageTemplateData (options, graph, package);
132
- var content = renderIndex (data, templates.indexTemplate );
131
+ var content = templates. renderIndex (data);
133
132
write (writer, package.filePath, data, content);
134
133
}
135
134
136
135
@override
137
136
void generateCategory (
138
137
FileWriter writer, PackageGraph packageGraph, Category category) {
139
138
TemplateData data = CategoryTemplateData (options, packageGraph, category);
140
- var content = renderCategory (data, templates.categoryTemplate );
139
+ var content = templates. renderCategory (data);
141
140
write (writer, category.filePath, data, content);
142
141
}
143
142
@@ -146,7 +145,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
146
145
FileWriter writer, PackageGraph packageGraph, Library lib) {
147
146
TemplateData data = LibraryTemplateData (
148
147
options, packageGraph, lib, sidebarForLibrary.getRenderFor);
149
- var content = renderLibrary (data, templates.libraryTemplate );
148
+ var content = templates. renderLibrary (data);
150
149
write (writer, lib.filePath, data, content);
151
150
}
152
151
@@ -155,7 +154,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
155
154
FileWriter writer, PackageGraph packageGraph, Library lib, Class clazz) {
156
155
TemplateData data = ClassTemplateData (options, packageGraph, lib, clazz,
157
156
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
158
- var content = renderClass (data, templates.classTemplate );
157
+ var content = templates. renderClass (data);
159
158
write (writer, clazz.filePath, data, content);
160
159
}
161
160
@@ -169,7 +168,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
169
168
extension ,
170
169
sidebarForLibrary.getRenderFor,
171
170
sidebarForContainer.getRenderFor);
172
- var content = renderExtension (data, templates.extensionTemplate );
171
+ var content = templates. renderExtension (data);
173
172
write (writer, extension .filePath, data, content);
174
173
}
175
174
@@ -178,7 +177,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
178
177
FileWriter writer, PackageGraph packageGraph, Library lib, Mixin mixin ) {
179
178
TemplateData data = MixinTemplateData (options, packageGraph, lib, mixin ,
180
179
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
181
- var content = renderMixin (data, templates.mixinTemplate );
180
+ var content = templates. renderMixin (data);
182
181
write (writer, mixin .filePath, data, content);
183
182
}
184
183
@@ -187,7 +186,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
187
186
Library lib, Class clazz, Constructor constructor) {
188
187
TemplateData data = ConstructorTemplateData (options, packageGraph, lib,
189
188
clazz, constructor, sidebarForContainer.getRenderFor);
190
- var content = renderConstructor (data, templates.constructorTemplate );
189
+ var content = templates. renderConstructor (data);
191
190
write (writer, constructor.filePath, data, content);
192
191
}
193
192
@@ -196,7 +195,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
196
195
FileWriter writer, PackageGraph packageGraph, Library lib, Enum eNum) {
197
196
TemplateData data = EnumTemplateData (options, packageGraph, lib, eNum,
198
197
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
199
- var content = renderEnum (data, templates.enumTemplate );
198
+ var content = templates. renderEnum (data);
200
199
write (writer, eNum.filePath, data, content);
201
200
}
202
201
@@ -205,7 +204,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
205
204
Library lib, ModelFunction function) {
206
205
TemplateData data = FunctionTemplateData (
207
206
options, packageGraph, lib, function, sidebarForLibrary.getRenderFor);
208
- var content = renderFunction (data, templates.functionTemplate );
207
+ var content = templates. renderFunction (data);
209
208
write (writer, function.filePath, data, content);
210
209
}
211
210
@@ -214,7 +213,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
214
213
Container clazz, Method method) {
215
214
TemplateData data = MethodTemplateData (options, packageGraph, lib, clazz,
216
215
method, sidebarForContainer.getRenderFor);
217
- var content = renderMethod (data, templates.methodTemplate );
216
+ var content = templates. renderMethod (data);
218
217
write (writer, method.filePath, data, content);
219
218
}
220
219
@@ -228,7 +227,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
228
227
Library lib, Container clazz, Field property) {
229
228
TemplateData data = PropertyTemplateData (options, packageGraph, lib, clazz,
230
229
property, sidebarForContainer.getRenderFor);
231
- var content = renderProperty (data, templates.propertyTemplate );
230
+ var content = templates. renderProperty (data);
232
231
write (writer, property.filePath, data, content);
233
232
}
234
233
@@ -237,8 +236,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
237
236
Library lib, TopLevelVariable property) {
238
237
TemplateData data = TopLevelPropertyTemplateData (
239
238
options, packageGraph, lib, property, sidebarForLibrary.getRenderFor);
240
- var content =
241
- renderTopLevelProperty (data, templates.topLevelPropertyTemplate);
239
+ var content = templates.renderTopLevelProperty (data);
242
240
write (writer, property.filePath, data, content);
243
241
}
244
242
@@ -252,11 +250,10 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
252
250
Library lib, Typedef typeDef) {
253
251
TemplateData data = TypedefTemplateData (
254
252
options, packageGraph, lib, typeDef, sidebarForLibrary.getRenderFor);
255
- var content = renderTypedef (data, templates.typeDefTemplate );
253
+ var content = templates. renderTypedef (data);
256
254
write (writer, typeDef.filePath, data, content);
257
255
}
258
256
259
257
@override
260
- Future <void > generateAdditionalFiles (
261
- FileWriter writer, PackageGraph graph) async {}
258
+ Future <void > generateAdditionalFiles (FileWriter writer) async {}
262
259
}
0 commit comments