Skip to content

Commit 2ae78bc

Browse files
authored
Split sidebars out into separate HTML files (#3384)
1 parent f00d044 commit 2ae78bc

39 files changed

+4680
-3370
lines changed

lib/resources/docs.dart.js

Lines changed: 2819 additions & 2725 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/resources/docs.dart.js.map

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/generator/generator_backend.dart

Lines changed: 16 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,6 @@ class DartdocGeneratorBackendOptions implements TemplateOptions {
5656
resourcesDir = context.resourcesDir;
5757
}
5858

59-
class SidebarGenerator<T extends TemplateData> {
60-
final String Function(T context) renderFunction;
61-
final Map<Documentable, String> _renderCache = {};
62-
63-
SidebarGenerator(this.renderFunction);
64-
65-
/// Retrieves the render for a specific [key], or generates it using the given
66-
/// [templateData] if needed.
67-
String getRenderFor(Documentable key, T templateData) {
68-
return _renderCache[key] ??= renderFunction(templateData);
69-
}
70-
}
71-
7259
/// An interface for classes which are responsible for outputing the generated
7360
/// documentation.
7461
abstract class GeneratorBackend {
@@ -142,10 +129,6 @@ abstract class GeneratorBackend {
142129
abstract class GeneratorBackendBase implements GeneratorBackend {
143130
final DartdocGeneratorBackendOptions options;
144131
final Templates templates;
145-
final SidebarGenerator<TemplateDataWithLibrary<Documentable>>
146-
_sidebarForLibrary;
147-
final SidebarGenerator<TemplateDataWithContainer<Documentable>>
148-
_sidebarForContainer;
149132

150133
@override
151134
final FileWriter writer;
@@ -154,11 +137,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
154137

155138
GeneratorBackendBase(
156139
this.options, this.templates, this.writer, this.resourceProvider)
157-
: _sidebarForLibrary =
158-
SidebarGenerator(templates.renderSidebarForLibrary),
159-
_sidebarForContainer =
160-
SidebarGenerator(templates.renderSidebarForContainer),
161-
_pathContext = resourceProvider.pathContext;
140+
: _pathContext = resourceProvider.pathContext;
162141

163142
/// Binds template data and emits the content to the [writer].
164143
void write(
@@ -205,8 +184,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
205184

206185
@override
207186
void generateClass(PackageGraph packageGraph, Library library, Class clazz) {
208-
var data = ClassTemplateData(options, packageGraph, library, clazz,
209-
_sidebarForLibrary.getRenderFor, _sidebarForContainer.getRenderFor);
187+
var data = ClassTemplateData(options, packageGraph, library, clazz);
210188
var content = templates.renderClass(data);
211189
write(writer, clazz.filePath, data, content);
212190
runtimeStats.incrementAccumulator('writtenClassFileCount');
@@ -220,17 +198,16 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
220198
@override
221199
void generateConstructor(PackageGraph packageGraph, Library library,
222200
Constructable constructable, Constructor constructor) {
223-
var data = ConstructorTemplateData(options, packageGraph, library,
224-
constructable, constructor, _sidebarForContainer.getRenderFor);
201+
var data = ConstructorTemplateData(
202+
options, packageGraph, library, constructable, constructor);
225203
var content = templates.renderConstructor(data);
226204
write(writer, constructor.filePath, data, content);
227205
runtimeStats.incrementAccumulator('writtenConstructorFileCount');
228206
}
229207

230208
@override
231209
void generateEnum(PackageGraph packageGraph, Library library, Enum eNum) {
232-
var data = EnumTemplateData(options, packageGraph, library, eNum,
233-
_sidebarForLibrary.getRenderFor, _sidebarForContainer.getRenderFor);
210+
var data = EnumTemplateData(options, packageGraph, library, eNum);
234211
var content = templates.renderEnum(data);
235212
write(writer, eNum.filePath, data, content);
236213
runtimeStats.incrementAccumulator('writtenEnumFileCount');
@@ -239,8 +216,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
239216
@override
240217
void generateExtension(
241218
PackageGraph packageGraph, Library library, Extension extension) {
242-
var data = ExtensionTemplateData(options, packageGraph, library, extension,
243-
_sidebarForLibrary.getRenderFor, _sidebarForContainer.getRenderFor);
219+
var data = ExtensionTemplateData(options, packageGraph, library, extension);
244220
var content = templates.renderExtension(data);
245221
write(writer, extension.filePath, data, content);
246222
runtimeStats.incrementAccumulator('writtenExtensionFileCount');
@@ -249,17 +225,15 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
249225
@override
250226
void generateFunction(
251227
PackageGraph packageGraph, Library library, ModelFunction function) {
252-
var data = FunctionTemplateData(options, packageGraph, library, function,
253-
_sidebarForLibrary.getRenderFor);
228+
var data = FunctionTemplateData(options, packageGraph, library, function);
254229
var content = templates.renderFunction(data);
255230
write(writer, function.filePath, data, content);
256231
runtimeStats.incrementAccumulator('writtenFunctionFileCount');
257232
}
258233

259234
@override
260235
void generateLibrary(PackageGraph packageGraph, Library library) {
261-
var data = LibraryTemplateData(
262-
options, packageGraph, library, _sidebarForLibrary.getRenderFor);
236+
var data = LibraryTemplateData(options, packageGraph, library);
263237
var content = templates.renderLibrary(data);
264238
write(writer, library.filePath, data, content);
265239
runtimeStats.incrementAccumulator('writtenLibraryFileCount');
@@ -268,17 +242,16 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
268242
@override
269243
void generateMethod(PackageGraph packageGraph, Library library,
270244
Container clazz, Method method) {
271-
var data = MethodTemplateData(options, packageGraph, library, clazz, method,
272-
_sidebarForContainer.getRenderFor);
245+
var data =
246+
MethodTemplateData(options, packageGraph, library, clazz, method);
273247
var content = templates.renderMethod(data);
274248
write(writer, method.filePath, data, content);
275249
runtimeStats.incrementAccumulator('writtenMethodFileCount');
276250
}
277251

278252
@override
279253
void generateMixin(PackageGraph packageGraph, Library library, Mixin mixin) {
280-
var data = MixinTemplateData(options, packageGraph, library, mixin,
281-
_sidebarForLibrary.getRenderFor, _sidebarForContainer.getRenderFor);
254+
var data = MixinTemplateData(options, packageGraph, library, mixin);
282255
var content = templates.renderMixin(data);
283256
write(writer, mixin.filePath, data, content);
284257
runtimeStats.incrementAccumulator('writtenMixinFileCount');
@@ -295,8 +268,8 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
295268
@override
296269
void generateProperty(PackageGraph packageGraph, Library library,
297270
Container clazz, Field field) {
298-
var data = PropertyTemplateData(options, packageGraph, library, clazz,
299-
field, _sidebarForContainer.getRenderFor);
271+
var data =
272+
PropertyTemplateData(options, packageGraph, library, clazz, field);
300273
var content = templates.renderProperty(data);
301274
write(writer, field.filePath, data, content);
302275
runtimeStats.incrementAccumulator('writtenPropertyFileCount');
@@ -310,8 +283,8 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
310283
@override
311284
void generateTopLevelProperty(
312285
PackageGraph packageGraph, Library library, TopLevelVariable property) {
313-
var data = TopLevelPropertyTemplateData(options, packageGraph, library,
314-
property, _sidebarForLibrary.getRenderFor);
286+
var data =
287+
TopLevelPropertyTemplateData(options, packageGraph, library, property);
315288
var content = templates.renderTopLevelProperty(data);
316289
write(writer, property.filePath, data, content);
317290
runtimeStats.incrementAccumulator('writtenTopLevelPropertyFileCount');
@@ -320,8 +293,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
320293
@override
321294
void generateTypeDef(
322295
PackageGraph packageGraph, Library library, Typedef typedef) {
323-
var data = TypedefTemplateData(options, packageGraph, library, typedef,
324-
_sidebarForLibrary.getRenderFor);
296+
var data = TypedefTemplateData(options, packageGraph, library, typedef);
325297
var content = templates.renderTypedef(data);
326298
write(writer, typedef.filePath, data, content);
327299
runtimeStats.incrementAccumulator('writtenTypedefFileCount');

lib/src/generator/generator_frontend.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class GeneratorFrontEnd implements Generator {
5757
'writtenMixinFileCount',
5858
'writtenPackageFileCount',
5959
'writtenPropertyFileCount',
60+
'writtenSidebarFileCount',
6061
'writtenTopLevelPropertyFileCount',
6162
'writtenTypedefFileCount'
6263
});

lib/src/generator/html_generator.dart

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import 'package:dartdoc/src/generator/html_resources.g.dart' as resources;
1212
import 'package:dartdoc/src/generator/resource_loader.dart';
1313
import 'package:dartdoc/src/generator/template_data.dart';
1414
import 'package:dartdoc/src/generator/templates.dart';
15-
import 'package:dartdoc/src/model/package.dart';
16-
import 'package:dartdoc/src/model/package_graph.dart';
15+
import 'package:dartdoc/src/model/model.dart';
16+
import 'package:dartdoc/src/runtime_stats.dart';
1717
import 'package:meta/meta.dart';
1818

1919
/// Creates a [Generator] with an [HtmlGeneratorBackend] backend.
@@ -37,6 +37,52 @@ class HtmlGeneratorBackend extends GeneratorBackendBase {
3737
HtmlGeneratorBackend(
3838
super.options, super.templates, super.writer, super.resourceProvider);
3939

40+
@override
41+
void generateClass(PackageGraph packageGraph, Library library, Class clazz) {
42+
super.generateClass(packageGraph, library, clazz);
43+
var data = ClassTemplateData(options, packageGraph, library, clazz);
44+
var sidebarContent = templates.renderSidebarForContainer(data);
45+
write(writer, clazz.sidebarPath, data, sidebarContent);
46+
runtimeStats.incrementAccumulator('writtenSidebarFileCount');
47+
}
48+
49+
@override
50+
void generateEnum(PackageGraph packageGraph, Library library, Enum eNum) {
51+
super.generateEnum(packageGraph, library, eNum);
52+
var data = EnumTemplateData(options, packageGraph, library, eNum);
53+
var sidebarContent = templates.renderSidebarForContainer(data);
54+
write(writer, eNum.sidebarPath, data, sidebarContent);
55+
runtimeStats.incrementAccumulator('writtenSidebarFileCount');
56+
}
57+
58+
@override
59+
void generateExtension(
60+
PackageGraph packageGraph, Library library, Extension extension) {
61+
super.generateExtension(packageGraph, library, extension);
62+
var data = ExtensionTemplateData(options, packageGraph, library, extension);
63+
var sidebarContent = templates.renderSidebarForContainer(data);
64+
write(writer, extension.sidebarPath, data, sidebarContent);
65+
runtimeStats.incrementAccumulator('writtenSidebarFileCount');
66+
}
67+
68+
@override
69+
void generateLibrary(PackageGraph packageGraph, Library library) {
70+
super.generateLibrary(packageGraph, library);
71+
var data = LibraryTemplateData(options, packageGraph, library);
72+
var sidebarContent = templates.renderSidebarForLibrary(data);
73+
write(writer, library.sidebarPath, data, sidebarContent);
74+
runtimeStats.incrementAccumulator('writtenSidebarFileCount');
75+
}
76+
77+
@override
78+
void generateMixin(PackageGraph packageGraph, Library library, Mixin mixin) {
79+
super.generateMixin(packageGraph, library, mixin);
80+
var data = MixinTemplateData(options, packageGraph, library, mixin);
81+
var sidebarContent = templates.renderSidebarForContainer(data);
82+
write(writer, mixin.sidebarPath, data, sidebarContent);
83+
runtimeStats.incrementAccumulator('writtenSidebarFileCount');
84+
}
85+
4086
@override
4187
void generatePackage(PackageGraph packageGraph, Package package) {
4288
super.generatePackage(packageGraph, package);

0 commit comments

Comments
 (0)