Skip to content

Commit 7645ef8

Browse files
authored
Minor category renderer cleanup (#2537)
* Minor category renderer cleanup * Switch to using the const constructors
1 parent 3141ceb commit 7645ef8

File tree

2 files changed

+34
-22
lines changed

2 files changed

+34
-22
lines changed

lib/src/render/category_renderer.dart

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,50 @@
44

55
import 'package:dartdoc/src/model/category.dart';
66

7+
/// A renderer for a [Category].
78
abstract class CategoryRenderer {
9+
const CategoryRenderer();
10+
11+
/// Render the label of this [category].
812
String renderCategoryLabel(Category category);
13+
14+
/// Render the name of this [category] with a link to its specified
15+
/// [Category.href] if it is documented.
916
String renderLinkedName(Category category);
1017
}
1118

19+
/// A HTML renderer for a [Category].
1220
class CategoryRendererHtml extends CategoryRenderer {
13-
static final CategoryRendererHtml _instance = CategoryRendererHtml._();
14-
15-
factory CategoryRendererHtml() {
16-
return _instance;
17-
}
18-
19-
CategoryRendererHtml._();
21+
const CategoryRendererHtml();
2022

2123
@override
2224
String renderCategoryLabel(Category category) {
23-
var spanClasses = <String>[];
24-
spanClasses.add('category');
25-
spanClasses.add(category.name.split(' ').join('-').toLowerCase());
26-
spanClasses.add('cp-${category.categoryIndex}');
25+
final buffer = StringBuffer('<span class="category ');
26+
final name = category.name;
27+
buffer.writeAll(name.toLowerCase().split(' '), '-');
28+
buffer.write(' cp-');
29+
buffer.write(category.categoryIndex);
30+
2731
if (category.isDocumented) {
28-
spanClasses.add('linked');
32+
buffer.write(' linked');
2933
}
30-
var spanTitle = 'This is part of the ${category.name} ${category.kind}.';
3134

32-
var buf = StringBuffer();
33-
buf.write('<span class="${spanClasses.join(' ')}" title="$spanTitle">');
34-
buf.write(renderLinkedName(category));
35-
buf.write('</span>');
36-
return buf.toString();
35+
buffer.write('"'); // Wrap up the class list and begin title
36+
buffer.write(' title="This is part of the ');
37+
buffer.write(name);
38+
buffer.write(' ');
39+
buffer.write(category.kind);
40+
buffer.write('.">'); // Wrap up the title
41+
42+
buffer.write(renderLinkedName(category));
43+
buffer.write('</span>');
44+
45+
return buffer.toString();
3746
}
3847

3948
@override
4049
String renderLinkedName(Category category) {
41-
var unbrokenName = category.name.replaceAll(' ', '&nbsp;');
50+
final unbrokenName = category.name.replaceAll(' ', '&nbsp;');
4251
if (category.isDocumented) {
4352
return '<a href="${category.href}">$unbrokenName</a>';
4453
} else {
@@ -47,13 +56,16 @@ class CategoryRendererHtml extends CategoryRenderer {
4756
}
4857
}
4958

59+
/// A markdown renderer for a [Category].
5060
class CategoryRendererMd extends CategoryRenderer {
61+
const CategoryRendererMd();
62+
5163
@override
5264
String renderCategoryLabel(Category category) => renderLinkedName(category);
5365

5466
@override
5567
String renderLinkedName(Category category) {
56-
var name = category.name;
68+
final name = category.name;
5769
if (category.isDocumented) {
5870
return '[$name](${category.href})';
5971
}

lib/src/render/renderer_factory.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class HtmlRenderFactory extends RendererFactory {
6363
TemplateRenderer get templateRenderer => HtmlTemplateRenderer();
6464

6565
@override
66-
CategoryRenderer get categoryRenderer => CategoryRendererHtml();
66+
CategoryRenderer get categoryRenderer => const CategoryRendererHtml();
6767

6868
@override
6969
DocumentationRenderer get documentationRenderer =>
@@ -115,7 +115,7 @@ class MdRenderFactory extends RendererFactory {
115115
TemplateRenderer get templateRenderer => MdTemplateRenderer();
116116

117117
@override
118-
CategoryRenderer get categoryRenderer => CategoryRendererMd();
118+
CategoryRenderer get categoryRenderer => const CategoryRendererMd();
119119

120120
// We render documentation as HTML for now.
121121
// TODO(jdkoren): explore using documentation directly in the output file.

0 commit comments

Comments
 (0)