Skip to content

Commit a70d66a

Browse files
committed
Mustachio: fix getter override order, and bounds bug (dart-lang#2523)
Mustachio: fix getter override order, and bounds bug Fix indentation in category.html (dart-lang#2521) WIP: flip to mustachio
1 parent 8b911bc commit a70d66a

File tree

4 files changed

+42
-16
lines changed

4 files changed

+42
-16
lines changed

lib/src/generator/dartdoc_generator_backend.dart

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
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';
56
import 'package:dartdoc/dartdoc.dart';
67
import 'package:dartdoc/options.dart';
78
import 'package:dartdoc/src/generator/generator_frontend.dart';
@@ -11,6 +12,7 @@ import 'package:dartdoc/src/generator/templates.dart';
1112
import 'package:dartdoc/src/model/model.dart';
1213
import 'package:dartdoc/src/model/package.dart';
1314
import 'package:dartdoc/src/model/package_graph.dart';
15+
import 'package:dartdoc/src/mustachio/renderer_base.dart';
1416
import 'package:dartdoc/src/warnings.dart';
1517
import 'package:mustache/mustache.dart';
1618
import 'package:path/path.dart' as path show Context;
@@ -90,7 +92,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
9092
sidebarForLibrary = SidebarGenerator(templates.sidebarLibraryTemplate);
9193

9294
/// 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,
9496
TemplateData data) {
9597
var content = template.renderString(data);
9698
if (!options.useBaseHref) {
@@ -100,6 +102,17 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
100102
element: data.self is Warnable ? data.self : null);
101103
}
102104

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+
103116
@override
104117
void generateCategoryJson(
105118
FileWriter writer, List<Categorization> categories) {
@@ -128,7 +141,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
128141
@override
129142
void generatePackage(FileWriter writer, PackageGraph graph, Package package) {
130143
TemplateData data = PackageTemplateData(options, graph, package);
131-
render(writer, package.filePath, templates.indexTemplate, data);
144+
render0(writer, package.filePath, templates.indexTemplate, data);
132145
}
133146

134147
@override
@@ -143,15 +156,15 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
143156
FileWriter writer, PackageGraph packageGraph, Library lib) {
144157
TemplateData data = LibraryTemplateData(
145158
options, packageGraph, lib, sidebarForLibrary.getRenderFor);
146-
render(writer, lib.filePath, templates.libraryTemplate, data);
159+
render0(writer, lib.filePath, templates.libraryTemplate, data);
147160
}
148161

149162
@override
150163
void generateClass(
151164
FileWriter writer, PackageGraph packageGraph, Library lib, Class clazz) {
152165
TemplateData data = ClassTemplateData(options, packageGraph, lib, clazz,
153166
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
154-
render(writer, clazz.filePath, templates.classTemplate, data);
167+
render0(writer, clazz.filePath, templates.classTemplate, data);
155168
}
156169

157170
@override
@@ -164,15 +177,15 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
164177
extension,
165178
sidebarForLibrary.getRenderFor,
166179
sidebarForContainer.getRenderFor);
167-
render(writer, extension.filePath, templates.extensionTemplate, data);
180+
render0(writer, extension.filePath, templates.extensionTemplate, data);
168181
}
169182

170183
@override
171184
void generateMixin(
172185
FileWriter writer, PackageGraph packageGraph, Library lib, Mixin mixin) {
173186
TemplateData data = MixinTemplateData(options, packageGraph, lib, mixin,
174187
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
175-
render(writer, mixin.filePath, templates.mixinTemplate, data);
188+
render0(writer, mixin.filePath, templates.mixinTemplate, data);
176189
}
177190

178191
@override
@@ -181,7 +194,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
181194
TemplateData data = ConstructorTemplateData(options, packageGraph, lib,
182195
clazz, constructor, sidebarForContainer.getRenderFor);
183196

184-
render(writer, constructor.filePath, templates.constructorTemplate, data);
197+
render0(writer, constructor.filePath, templates.constructorTemplate, data);
185198
}
186199

187200
@override
@@ -190,7 +203,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
190203
TemplateData data = EnumTemplateData(options, packageGraph, lib, eNum,
191204
sidebarForLibrary.getRenderFor, sidebarForContainer.getRenderFor);
192205

193-
render(writer, eNum.filePath, templates.enumTemplate, data);
206+
render0(writer, eNum.filePath, templates.enumTemplate, data);
194207
}
195208

196209
@override
@@ -199,7 +212,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
199212
TemplateData data = FunctionTemplateData(
200213
options, packageGraph, lib, function, sidebarForLibrary.getRenderFor);
201214

202-
render(writer, function.filePath, templates.functionTemplate, data);
215+
render0(writer, function.filePath, templates.functionTemplate, data);
203216
}
204217

205218
@override
@@ -208,7 +221,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
208221
TemplateData data = MethodTemplateData(options, packageGraph, lib, clazz,
209222
method, sidebarForContainer.getRenderFor);
210223

211-
render(writer, method.filePath, templates.methodTemplate, data);
224+
render0(writer, method.filePath, templates.methodTemplate, data);
212225
}
213226

214227
@override
@@ -222,7 +235,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
222235
TemplateData data = PropertyTemplateData(options, packageGraph, lib, clazz,
223236
property, sidebarForContainer.getRenderFor);
224237

225-
render(writer, property.filePath, templates.propertyTemplate, data);
238+
render0(writer, property.filePath, templates.propertyTemplate, data);
226239
}
227240

228241
@override
@@ -231,7 +244,8 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
231244
TemplateData data = TopLevelPropertyTemplateData(
232245
options, packageGraph, lib, property, sidebarForLibrary.getRenderFor);
233246

234-
render(writer, property.filePath, templates.topLevelPropertyTemplate, data);
247+
render0(
248+
writer, property.filePath, templates.topLevelPropertyTemplate, data);
235249
}
236250

237251
@override
@@ -245,7 +259,7 @@ abstract class DartdocGeneratorBackend implements GeneratorBackend {
245259
TemplateData data = TypedefTemplateData(
246260
options, packageGraph, lib, typeDef, sidebarForLibrary.getRenderFor);
247261

248-
render(writer, typeDef.filePath, templates.typeDefTemplate, data);
262+
render0(writer, typeDef.filePath, templates.typeDefTemplate, data);
249263
}
250264

251265
@override

lib/src/generator/html_generator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class HtmlGeneratorBackend extends DartdocGeneratorBackend {
3636
super.generatePackage(writer, graph, package);
3737
// We have to construct the data again. This only happens once per package.
3838
TemplateData data = PackageTemplateData(options, graph, package);
39-
render(writer, '__404error.html', templates.errorTemplate, data);
39+
render0(writer, '__404error.html', templates.errorTemplate, data);
4040
}
4141

4242
@override

lib/src/generator/markdown_generator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ class MarkdownGeneratorBackend extends DartdocGeneratorBackend {
3232
super.generatePackage(writer, graph, package);
3333
// We have to construct the data again. This only happens once per package.
3434
TemplateData data = PackageTemplateData(options, graph, package);
35-
render(writer, '__404error.md', templates.errorTemplate, data);
35+
render0(writer, '__404error.md', templates.errorTemplate, data);
3636
}
3737
}

lib/src/generator/templates.dart

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,19 @@
44

55
// TODO(srawlins): Add Renderer annotations for more types as the mustachio
66
// implementation matures.
7-
@Renderer(#renderIndex, Context<PackageTemplateData>(), visibleTypes: {Package})
7+
@Renderer(#renderCategory, Context<CategoryTemplateData>())
8+
@Renderer(#renderClass, Context<ClassTemplateData>())
9+
@Renderer(#renderConstructor, Context<ConstructorTemplateData>())
10+
@Renderer(#renderEnum, Context<EnumTemplateData>())
11+
@Renderer(#renderExtension, Context<ExtensionTemplateData>())
12+
@Renderer(#renderFunction, Context<FunctionTemplateData>())
13+
@Renderer(#renderIndex, Context<PackageTemplateData>())
14+
@Renderer(#renderLibrary, Context<LibraryTemplateData>())
15+
@Renderer(#renderMethod, Context<MethodTemplateData>())
16+
@Renderer(#renderMixin, Context<MixinTemplateData>())
17+
@Renderer(#renderProperty, Context<PropertyTemplateData>())
18+
@Renderer(#renderTopLevelProperty, Context<TopLevelPropertyTemplateData>())
19+
@Renderer(#renderTypedef, Context<TypedefTemplateData>())
820
library dartdoc.templates;
921

1022
import 'package:analyzer/file_system/file_system.dart';

0 commit comments

Comments
 (0)