Skip to content

Commit 0efd1b0

Browse files
authored
Clean up GeneratorBackend. (#3673)
* Merge GeneratorBackend and GeneratorBackendBase. * Remove the unnecessary helpers.
1 parent 721af77 commit 0efd1b0

File tree

4 files changed

+32
-116
lines changed

4 files changed

+32
-116
lines changed

lib/src/generator/generator_backend.dart

Lines changed: 21 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -56,90 +56,16 @@ class DartdocGeneratorBackendOptions implements TemplateOptions {
5656
packageOrder = context.packageOrder;
5757
}
5858

59-
/// An interface for classes which are responsible for outputing the generated
60-
/// documentation.
61-
abstract interface class GeneratorBackend {
62-
FileWriter get writer;
63-
64-
/// Emits JSON describing the [categories] defined by the package.
65-
void generateCategoryJson(List<Categorization> categories);
66-
67-
/// Emits a JSON catalog of [indexedElements] for use with a search index.
68-
void generateSearchIndex(List<Indexable> indexedElements);
69-
70-
/// Emits documentation content for the [package].
71-
void generatePackage(PackageGraph packageGraph, Package package);
72-
73-
/// Emits documentation content for the [category].
74-
void generateCategory(PackageGraph packageGraph, Category category);
75-
76-
/// Emits documentation content for the [library].
77-
void generateLibrary(PackageGraph packageGraph, Library library);
78-
79-
/// Emits documentation content for the [clazz].
80-
void generateClass(PackageGraph packageGraph, Library library, Class clazz);
81-
82-
/// Emits documentation content for the [eNum].
83-
void generateEnum(PackageGraph packageGraph, Library library, Enum eNum);
84-
85-
/// Emits documentation content for the [extension].
86-
void generateExtension(
87-
PackageGraph packageGraph, Library library, Extension extension);
88-
89-
/// Emits documentation content for the [extensionType].
90-
void generateExtensionType(
91-
PackageGraph packageGraph, Library library, ExtensionType extensionType);
92-
93-
/// Emits documentation content for the [mixin].
94-
void generateMixin(PackageGraph packageGraph, Library library, Mixin mixin);
95-
96-
/// Emits documentation content for the [constructor].
97-
void generateConstructor(PackageGraph packageGraph, Library library,
98-
Constructable constructable, Constructor constructor);
99-
100-
/// Emits documentation content for the [field].
101-
void generateConstant(
102-
PackageGraph packageGraph, Library library, Container clazz, Field field);
103-
104-
/// Emits documentation content for the [field].
105-
void generateProperty(
106-
PackageGraph packageGraph, Library library, Container clazz, Field field);
107-
108-
/// Emits documentation content for the [method].
109-
void generateMethod(PackageGraph packageGraph, Library library,
110-
Container clazz, Method method);
111-
112-
/// Emits documentation content for the [function].
113-
void generateFunction(
114-
PackageGraph packageGraph, Library library, ModelFunction function);
115-
116-
/// Emits documentation content for the [constant].
117-
void generateTopLevelConstant(
118-
PackageGraph packageGraph, Library library, TopLevelVariable constant);
119-
120-
/// Emits documentation content for the [property].
121-
void generateTopLevelProperty(
122-
PackageGraph packageGraph, Library library, TopLevelVariable property);
123-
124-
/// Emits documentation content for the [typedef].
125-
void generateTypeDef(
126-
PackageGraph packageGraph, Library library, Typedef typedef);
127-
128-
/// Emits files not specific to a Dart language element (like a favicon, etc).
129-
Future<void> generateAdditionalFiles();
130-
}
131-
132-
/// Base [GeneratorBackend] for Dartdoc's supported formats.
133-
abstract class GeneratorBackendBase implements GeneratorBackend {
59+
/// Outputs generated documentation.
60+
abstract class GeneratorBackend {
13461
final DartdocGeneratorBackendOptions options;
13562
final Templates templates;
13663

137-
@override
13864
final FileWriter writer;
13965
final ResourceProvider resourceProvider;
14066
final p.Context _pathContext;
14167

142-
GeneratorBackendBase(
68+
GeneratorBackend(
14369
this.options, this.templates, this.writer, this.resourceProvider)
14470
: _pathContext = resourceProvider.pathContext;
14571

@@ -164,7 +90,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
16490
element: element is Warnable ? element : null);
16591
}
16692

167-
@override
93+
/// Emits JSON describing the [categories] defined by the package.
16894
void generateCategoryJson(List<Categorization> categories) {
16995
var json = '[]';
17096
if (categories.isNotEmpty) {
@@ -178,7 +104,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
178104
writer.write(_pathContext.join('categories.json'), '$json\n');
179105
}
180106

181-
@override
107+
/// Emits a JSON catalog of [indexedElements] for use with a search index.
182108
void generateSearchIndex(List<Indexable> indexedElements) {
183109
var json = generator_util.generateSearchIndexJson(
184110
indexedElements,
@@ -191,28 +117,23 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
191117
writer.write(_pathContext.join('index.json'), '$json\n');
192118
}
193119

194-
@override
120+
/// Emits documentation content for the [category].
195121
void generateCategory(PackageGraph packageGraph, Category category) {
196122
var data = CategoryTemplateData(options, packageGraph, category);
197123
var content = templates.renderCategory(data);
198124
write(writer, category.filePath, data, content);
199125
runtimeStats.incrementAccumulator('writtenCategoryFileCount');
200126
}
201127

202-
@override
128+
/// Emits documentation content for the [clazz].
203129
void generateClass(PackageGraph packageGraph, Library library, Class clazz) {
204130
var data = ClassTemplateData(options, packageGraph, library, clazz);
205131
var content = templates.renderClass(data);
206132
write(writer, clazz.filePath, data, content);
207133
runtimeStats.incrementAccumulator('writtenClassFileCount');
208134
}
209135

210-
@override
211-
void generateConstant(PackageGraph packageGraph, Library library,
212-
Container clazz, Field field) =>
213-
generateProperty(packageGraph, library, clazz, field);
214-
215-
@override
136+
/// Emits documentation content for the [constructor].
216137
void generateConstructor(PackageGraph packageGraph, Library library,
217138
Constructable constructable, Constructor constructor) {
218139
var data = ConstructorTemplateData(
@@ -222,15 +143,15 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
222143
runtimeStats.incrementAccumulator('writtenConstructorFileCount');
223144
}
224145

225-
@override
146+
/// Emits documentation content for the [eNum].
226147
void generateEnum(PackageGraph packageGraph, Library library, Enum eNum) {
227148
var data = EnumTemplateData(options, packageGraph, library, eNum);
228149
var content = templates.renderEnum(data);
229150
write(writer, eNum.filePath, data, content);
230151
runtimeStats.incrementAccumulator('writtenEnumFileCount');
231152
}
232153

233-
@override
154+
/// Emits documentation content for the [extension].
234155
void generateExtension(
235156
PackageGraph packageGraph, Library library, Extension extension) {
236157
var data = ExtensionTemplateData(options, packageGraph, library, extension);
@@ -239,7 +160,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
239160
runtimeStats.incrementAccumulator('writtenExtensionFileCount');
240161
}
241162

242-
@override
163+
/// Emits documentation content for the [extensionType].
243164
void generateExtensionType(
244165
PackageGraph packageGraph, Library library, ExtensionType extensionType) {
245166
var data = ExtensionTypeTemplateData(
@@ -249,7 +170,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
249170
runtimeStats.incrementAccumulator('writtenExtensionTypeFileCount');
250171
}
251172

252-
@override
173+
/// Emits documentation content for the [function].
253174
void generateFunction(
254175
PackageGraph packageGraph, Library library, ModelFunction function) {
255176
var data = FunctionTemplateData(options, packageGraph, library, function);
@@ -258,15 +179,15 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
258179
runtimeStats.incrementAccumulator('writtenFunctionFileCount');
259180
}
260181

261-
@override
182+
/// Emits documentation content for the [library].
262183
void generateLibrary(PackageGraph packageGraph, Library library) {
263184
var data = LibraryTemplateData(options, packageGraph, library);
264185
var content = templates.renderLibrary(data);
265186
write(writer, library.filePath, data, content);
266187
runtimeStats.incrementAccumulator('writtenLibraryFileCount');
267188
}
268189

269-
@override
190+
/// Emits documentation content for the [method].
270191
void generateMethod(PackageGraph packageGraph, Library library,
271192
Container clazz, Method method) {
272193
var data =
@@ -276,23 +197,23 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
276197
runtimeStats.incrementAccumulator('writtenMethodFileCount');
277198
}
278199

279-
@override
200+
/// Emits documentation content for the [mixin].
280201
void generateMixin(PackageGraph packageGraph, Library library, Mixin mixin) {
281202
var data = MixinTemplateData(options, packageGraph, library, mixin);
282203
var content = templates.renderMixin(data);
283204
write(writer, mixin.filePath, data, content);
284205
runtimeStats.incrementAccumulator('writtenMixinFileCount');
285206
}
286207

287-
@override
208+
/// Emits documentation content for the [package].
288209
void generatePackage(PackageGraph packageGraph, Package package) {
289210
var data = PackageTemplateData(options, packageGraph, package);
290211
var content = templates.renderIndex(data);
291212
write(writer, package.filePath, data, content);
292213
runtimeStats.incrementAccumulator('writtenPackageFileCount');
293214
}
294215

295-
@override
216+
/// Emits documentation content for the [field].
296217
void generateProperty(PackageGraph packageGraph, Library library,
297218
Container clazz, Field field) {
298219
var data =
@@ -302,12 +223,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
302223
runtimeStats.incrementAccumulator('writtenPropertyFileCount');
303224
}
304225

305-
@override
306-
void generateTopLevelConstant(PackageGraph packageGraph, Library library,
307-
TopLevelVariable constant) =>
308-
generateTopLevelProperty(packageGraph, library, constant);
309-
310-
@override
226+
/// Emits documentation content for the [property].
311227
void generateTopLevelProperty(
312228
PackageGraph packageGraph, Library library, TopLevelVariable property) {
313229
var data =
@@ -317,7 +233,7 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
317233
runtimeStats.incrementAccumulator('writtenTopLevelPropertyFileCount');
318234
}
319235

320-
@override
236+
/// Emits documentation content for the [typedef].
321237
void generateTypeDef(
322238
PackageGraph packageGraph, Library library, Typedef typedef) {
323239
var data = TypedefTemplateData(options, packageGraph, library, typedef);
@@ -326,6 +242,6 @@ abstract class GeneratorBackendBase implements GeneratorBackend {
326242
runtimeStats.incrementAccumulator('writtenTypedefFileCount');
327243
}
328244

329-
@override
330-
Future<void> generateAdditionalFiles() async {}
245+
/// Emits files not specific to a Dart language element (like a favicon, etc).
246+
Future<void> generateAdditionalFiles();
331247
}

lib/src/generator/generator_frontend.dart

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ class GeneratorFrontEnd implements Generator {
9999
if (!constant.isCanonical) continue;
100100

101101
indexAccumulator.add(constant);
102-
_generatorBackend.generateConstant(
102+
_generatorBackend.generateProperty(
103103
packageGraph, lib, clazz, constant);
104104
}
105105

@@ -149,7 +149,7 @@ class GeneratorFrontEnd implements Generator {
149149

150150
for (var constant in filterNonDocumented(extension.constantFields)) {
151151
indexAccumulator.add(constant);
152-
_generatorBackend.generateConstant(
152+
_generatorBackend.generateProperty(
153153
packageGraph, lib, extension, constant);
154154
}
155155

@@ -206,7 +206,7 @@ class GeneratorFrontEnd implements Generator {
206206
for (var constant
207207
in filterNonDocumented(extensionType.constantFields)) {
208208
indexAccumulator.add(constant);
209-
_generatorBackend.generateConstant(
209+
_generatorBackend.generateProperty(
210210
packageGraph, lib, extensionType, constant);
211211
}
212212

@@ -254,7 +254,7 @@ class GeneratorFrontEnd implements Generator {
254254
for (var constant in filterNonDocumented(mixin.constantFields)) {
255255
if (!constant.isCanonical) continue;
256256
indexAccumulator.add(constant);
257-
_generatorBackend.generateConstant(
257+
_generatorBackend.generateProperty(
258258
packageGraph, lib, mixin, constant);
259259
}
260260

@@ -263,15 +263,15 @@ class GeneratorFrontEnd implements Generator {
263263
if (!property.isCanonical) continue;
264264

265265
indexAccumulator.add(property);
266-
_generatorBackend.generateConstant(
266+
_generatorBackend.generateProperty(
267267
packageGraph, lib, mixin, property);
268268
}
269269

270270
for (var property in filterNonDocumented(mixin.instanceFields)) {
271271
if (!property.isCanonical) continue;
272272

273273
indexAccumulator.add(property);
274-
_generatorBackend.generateConstant(
274+
_generatorBackend.generateProperty(
275275
packageGraph, lib, mixin, property);
276276
}
277277

@@ -311,7 +311,7 @@ class GeneratorFrontEnd implements Generator {
311311
if (!constant.isCanonical) continue;
312312

313313
indexAccumulator.add(constant);
314-
_generatorBackend.generateConstant(
314+
_generatorBackend.generateProperty(
315315
packageGraph, lib, enum_, constant);
316316
}
317317

@@ -325,7 +325,7 @@ class GeneratorFrontEnd implements Generator {
325325

326326
for (var property in filterNonDocumented(enum_.instanceFields)) {
327327
indexAccumulator.add(property);
328-
_generatorBackend.generateConstant(
328+
_generatorBackend.generateProperty(
329329
packageGraph, lib, enum_, property);
330330
}
331331
for (var operator in filterNonDocumented(enum_.instanceOperators)) {
@@ -341,7 +341,7 @@ class GeneratorFrontEnd implements Generator {
341341

342342
for (var constant in filterNonDocumented(lib.constants)) {
343343
indexAccumulator.add(constant);
344-
_generatorBackend.generateTopLevelConstant(
344+
_generatorBackend.generateTopLevelProperty(
345345
packageGraph, lib, constant);
346346
}
347347

lib/src/generator/html_generator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Future<Generator> initHtmlGenerator(
3131
}
3232

3333
/// Generator backend for HTML output.
34-
class HtmlGeneratorBackend extends GeneratorBackendBase {
34+
class HtmlGeneratorBackend extends GeneratorBackend {
3535
HtmlGeneratorBackend(
3636
super.options, super.templates, super.writer, super.resourceProvider);
3737

lib/src/generator/template_data.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ abstract class TemplateDataBase {
7070
/// When not using the HTML 'base' tag (default behavior), this represents the
7171
/// path from this page back to the HTML base.
7272
///
73-
/// See [GeneratorBackendBase.write] for how this text is used in generating
73+
/// See [GeneratorBackend.write] for how this text is used in generating
7474
/// link URLs.
7575
String get htmlBase;
7676

0 commit comments

Comments
 (0)