4
4
5
5
import 'package:dartdoc/src/model/category.dart' ;
6
6
7
+ /// A renderer for a [Category] .
7
8
abstract class CategoryRenderer {
9
+ const CategoryRenderer ();
10
+
11
+ /// Render the label of this [category] .
8
12
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.
9
16
String renderLinkedName (Category category);
10
17
}
11
18
19
+ /// A HTML renderer for a [Category] .
12
20
class CategoryRendererHtml extends CategoryRenderer {
13
- static final CategoryRendererHtml _instance = CategoryRendererHtml ._();
14
-
15
- factory CategoryRendererHtml () {
16
- return _instance;
17
- }
18
-
19
- CategoryRendererHtml ._();
21
+ const CategoryRendererHtml ();
20
22
21
23
@override
22
24
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
+
27
31
if (category.isDocumented) {
28
- spanClasses. add ( ' linked' );
32
+ buffer. write ( ' linked' );
29
33
}
30
- var spanTitle = 'This is part of the ${category .name } ${category .kind }.' ;
31
34
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 ();
37
46
}
38
47
39
48
@override
40
49
String renderLinkedName (Category category) {
41
- var unbrokenName = category.name.replaceAll (' ' , ' ' );
50
+ final unbrokenName = category.name.replaceAll (' ' , ' ' );
42
51
if (category.isDocumented) {
43
52
return '<a href="${category .href }">$unbrokenName </a>' ;
44
53
} else {
@@ -47,13 +56,16 @@ class CategoryRendererHtml extends CategoryRenderer {
47
56
}
48
57
}
49
58
59
+ /// A markdown renderer for a [Category] .
50
60
class CategoryRendererMd extends CategoryRenderer {
61
+ const CategoryRendererMd ();
62
+
51
63
@override
52
64
String renderCategoryLabel (Category category) => renderLinkedName (category);
53
65
54
66
@override
55
67
String renderLinkedName (Category category) {
56
- var name = category.name;
68
+ final name = category.name;
57
69
if (category.isDocumented) {
58
70
return '[$name ](${category .href })' ;
59
71
}
0 commit comments