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' ;
@@ -11,6 +12,7 @@ import 'package:dartdoc/src/generator/templates.dart';
11
12
import 'package:dartdoc/src/model/model.dart' ;
12
13
import 'package:dartdoc/src/model/package.dart' ;
13
14
import 'package:dartdoc/src/model/package_graph.dart' ;
15
+ import 'package:dartdoc/src/mustachio/renderer_base.dart' ;
14
16
import 'package:dartdoc/src/warnings.dart' ;
15
17
import 'package:mustache/mustache.dart' ;
16
18
import 'package:path/path.dart' as path show Context;
@@ -90,7 +92,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
90
92
sidebarForLibrary = SidebarGenerator (templates.sidebarLibraryTemplate);
91
93
92
94
/// Helper method to bind template data and emit the content to the writer.
93
- void render (FileWriter writer, String filename, Template template,
95
+ void render0 (FileWriter writer, String filename, Template template,
94
96
TemplateData data) {
95
97
var content = template.renderString (data);
96
98
if (! options.useBaseHref) {
@@ -100,6 +102,17 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
100
102
element: data.self is Warnable ? data.self : null );
101
103
}
102
104
105
+ /// Helper method to bind template data and emit the content to the writer.
106
+ void render <T extends TemplateData >(FileWriter writer, String filename,
107
+ RenderFunction <T > renderTemplate, T data) {
108
+ var content = renderTemplate (data, FILE );
109
+ if (! options.useBaseHref) {
110
+ content = content.replaceAll (HTMLBASE_PLACEHOLDER , data.htmlBase);
111
+ }
112
+ writer.write (filename, content,
113
+ element: data.self is Warnable ? data.self : null );
114
+ }
115
+
103
116
@override
104
117
void generateCategoryJson (
105
118
FileWriter writer, List <Categorization > categories) {
@@ -128,7 +141,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
128
141
@override
129
142
void generatePackage (FileWriter writer, PackageGraph graph, Package package) {
130
143
TemplateData data = PackageTemplateData (options, graph, package);
131
- render (writer, package.filePath, templates.indexTemplate, data);
144
+ render0 (writer, package.filePath, templates.indexTemplate, data);
132
145
}
133
146
134
147
@override
@@ -143,15 +156,15 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
143
156
FileWriter writer, PackageGraph packageGraph, Library lib) {
144
157
TemplateData data = LibraryTemplateData (
145
158
options, packageGraph, lib, sidebarForLibrary.getRenderFor);
146
- render (writer, lib.filePath, templates.libraryTemplate, data);
159
+ render0 (writer, lib.filePath, templates.libraryTemplate, data);
147
160
}
148
161
149
162
@override
150
163
void generateClass (
151
164
FileWriter writer, PackageGraph packageGraph, Library lib, Class clazz) {
152
165
TemplateData data = ClassTemplateData (options, packageGraph, lib, clazz,
153
166
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
154
- render (writer, clazz.filePath, templates.classTemplate, data);
167
+ render0 (writer, clazz.filePath, templates.classTemplate, data);
155
168
}
156
169
157
170
@override
@@ -164,15 +177,15 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
164
177
extension ,
165
178
sidebarForLibrary.getRenderFor,
166
179
sidebarForContainer.getRenderFor);
167
- render (writer, extension .filePath, templates.extensionTemplate, data);
180
+ render0 (writer, extension .filePath, templates.extensionTemplate, data);
168
181
}
169
182
170
183
@override
171
184
void generateMixin (
172
185
FileWriter writer, PackageGraph packageGraph, Library lib, Mixin mixin ) {
173
186
TemplateData data = MixinTemplateData (options, packageGraph, lib, mixin ,
174
187
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
175
- render (writer, mixin .filePath, templates.mixinTemplate, data);
188
+ render0 (writer, mixin .filePath, templates.mixinTemplate, data);
176
189
}
177
190
178
191
@override
@@ -181,7 +194,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
181
194
TemplateData data = ConstructorTemplateData (options, packageGraph, lib,
182
195
clazz, constructor, sidebarForContainer.getRenderFor);
183
196
184
- render (writer, constructor.filePath, templates.constructorTemplate, data);
197
+ render0 (writer, constructor.filePath, templates.constructorTemplate, data);
185
198
}
186
199
187
200
@override
@@ -190,7 +203,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
190
203
TemplateData data = EnumTemplateData (options, packageGraph, lib, eNum,
191
204
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
192
205
193
- render (writer, eNum.filePath, templates.enumTemplate, data);
206
+ render0 (writer, eNum.filePath, templates.enumTemplate, data);
194
207
}
195
208
196
209
@override
@@ -199,7 +212,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
199
212
TemplateData data = FunctionTemplateData (
200
213
options, packageGraph, lib, function, sidebarForLibrary.getRenderFor);
201
214
202
- render (writer, function.filePath, templates.functionTemplate, data);
215
+ render0 (writer, function.filePath, templates.functionTemplate, data);
203
216
}
204
217
205
218
@override
@@ -208,7 +221,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
208
221
TemplateData data = MethodTemplateData (options, packageGraph, lib, clazz,
209
222
method, sidebarForContainer.getRenderFor);
210
223
211
- render (writer, method.filePath, templates.methodTemplate, data);
224
+ render0 (writer, method.filePath, templates.methodTemplate, data);
212
225
}
213
226
214
227
@override
@@ -222,7 +235,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
222
235
TemplateData data = PropertyTemplateData (options, packageGraph, lib, clazz,
223
236
property, sidebarForContainer.getRenderFor);
224
237
225
- render (writer, property.filePath, templates.propertyTemplate, data);
238
+ render0 (writer, property.filePath, templates.propertyTemplate, data);
226
239
}
227
240
228
241
@override
@@ -231,7 +244,8 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
231
244
TemplateData data = TopLevelPropertyTemplateData (
232
245
options, packageGraph, lib, property, sidebarForLibrary.getRenderFor);
233
246
234
- render (writer, property.filePath, templates.topLevelPropertyTemplate, data);
247
+ render0 (
248
+ writer, property.filePath, templates.topLevelPropertyTemplate, data);
235
249
}
236
250
237
251
@override
@@ -245,7 +259,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
245
259
TemplateData data = TypedefTemplateData (
246
260
options, packageGraph, lib, typeDef, sidebarForLibrary.getRenderFor);
247
261
248
- render (writer, typeDef.filePath, templates.typeDefTemplate, data);
262
+ render0 (writer, typeDef.filePath, templates.typeDefTemplate, data);
249
263
}
250
264
251
265
@override
0 commit comments