Skip to content

Commit 6e60928

Browse files
committed
use templates for redirect
1 parent 800df14 commit 6e60928

File tree

6 files changed

+20231
-21636
lines changed

6 files changed

+20231
-21636
lines changed

lib/src/generator/generator_backend.dart

+3-9
Original file line numberDiff line numberDiff line change
@@ -116,20 +116,14 @@ abstract class GeneratorBackend {
116116
writer.write(_pathContext.join('index.json'), '$json\n');
117117
}
118118

119-
String _redirectContent(Category category) => '''<!DOCTYPE html>
120-
<html>
121-
<head>
122-
<meta http-equiv="refresh" content="0; url=${category.fileName}" />
123-
</head>
124-
</html> ''';
125-
126119
/// Emits documentation content for the [category].
127120
void generateCategory(PackageGraph packageGraph, Category category) {
128121
var data = CategoryTemplateData(options, packageGraph, category);
129122
var content = templates.renderCategory(data);
130123
write(writer, category.filePath, data, content);
131-
if (category.filePath != category.legacyFilePath) {
132-
writer.write(category.legacyFilePath, _redirectContent(category));
124+
if (category.filePath != category.redirectFilePath) {
125+
var redirectContent = templates.renderCategoryRedirect(data);
126+
write(writer, category.redirectFilePath, data, redirectContent);
133127
}
134128

135129
runtimeStats.incrementAccumulator('writtenCategoryFileCount');

lib/src/generator/templates.aot_renderers_for_html.dart

+34
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,40 @@ String renderCategory(CategoryTemplateData context0) {
234234
return buffer.toString();
235235
}
236236

237+
String renderCategoryRedirect(CategoryTemplateData context0) {
238+
final buffer = StringBuffer();
239+
buffer.write('''<!DOCTYPE html>
240+
<html lang="en">
241+
<head>
242+
<link rel="canonical" href="''');
243+
if (context0.useBaseHref) {
244+
var context1 = context0.htmlBase;
245+
buffer.write(context0.htmlBase);
246+
}
247+
buffer.writeEscaped(context0.self.href);
248+
buffer.write('''" />
249+
<meta http-equiv="refresh" content="0; url=''');
250+
if (context0.useBaseHref) {
251+
var context2 = context0.htmlBase;
252+
buffer.write(context0.htmlBase);
253+
}
254+
buffer.writeEscaped(context0.self.href);
255+
buffer.write('''" />
256+
</head>
257+
<body>
258+
<p><a href="''');
259+
if (context0.useBaseHref) {
260+
var context3 = context0.htmlBase;
261+
buffer.write(context0.htmlBase);
262+
}
263+
buffer.writeEscaped(context0.self.href);
264+
buffer.write('''">New URL</a></p>
265+
</body>
266+
</html>''');
267+
268+
return buffer.toString();
269+
}
270+
237271
String renderClass(ClassTemplateData context0) {
238272
final buffer = StringBuffer();
239273
buffer.write(_renderClass_partial_head_0(context0));

lib/src/generator/templates.dart

+12
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212

1313
@Renderer(#renderCategory, Context<CategoryTemplateData>(), 'category',
1414
visibleTypes: _visibleTypes)
15+
@Renderer(#renderCategoryRedirect, Context<CategoryTemplateData>(),
16+
'category_redirect',
17+
visibleTypes: _visibleTypes)
1518
@Renderer(#renderClass, Context<ClassTemplateData>(), 'class')
1619
@Renderer(#renderConstructor, Context<ConstructorTemplateData>(), 'constructor')
1720
@Renderer(#renderEnum, Context<EnumTemplateData>(), 'enum')
@@ -92,6 +95,7 @@ const _visibleTypes = {
9295
/// The collection of [Template] objects.
9396
abstract class Templates {
9497
String renderCategory(CategoryTemplateData context);
98+
String renderCategoryRedirect(CategoryTemplateData context);
9599
String renderClass<T extends Class>(ClassTemplateData context);
96100
String renderConstructor(ConstructorTemplateData context);
97101
String renderEnum(EnumTemplateData context);
@@ -141,6 +145,10 @@ class HtmlAotTemplates implements Templates {
141145
String renderCategory(CategoryTemplateData context) =>
142146
aot_renderers_for_html.renderCategory(context);
143147

148+
@override
149+
String renderCategoryRedirect(CategoryTemplateData context) =>
150+
aot_renderers_for_html.renderCategoryRedirect(context);
151+
144152
@override
145153
String renderClass<T extends Class>(ClassTemplateData context) =>
146154
aot_renderers_for_html.renderClass(context);
@@ -222,6 +230,10 @@ class RuntimeTemplates implements Templates {
222230
String renderCategory(CategoryTemplateData context) =>
223231
runtime_renderers.renderCategory(context, _categoryTemplate);
224232

233+
@override
234+
String renderCategoryRedirect(CategoryTemplateData context) =>
235+
runtime_renderers.renderCategoryRedirect(context, _categoryTemplate);
236+
225237
@override
226238
String renderClass<T extends Class>(ClassTemplateData context) =>
227239
runtime_renderers.renderClass(context, _classTemplate);

0 commit comments

Comments
 (0)