Skip to content

Commit 9adffce

Browse files
committed
add tag.dart and _tags.html
1 parent 14f69d3 commit 9adffce

File tree

3 files changed

+70
-163
lines changed

3 files changed

+70
-163
lines changed

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 17 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -12084,7 +12084,14 @@ class _Renderer_InheritingContainer extends RendererBase<InheritingContainer> {
1208412084
StringSink sink,
1208512085
) {
1208612086
return c.tags.map(
12087-
(e) => _render_Tag(e, ast, r.template, sink, parent: r),
12087+
(e) => renderSimple(
12088+
e,
12089+
ast,
12090+
r.template,
12091+
sink,
12092+
parent: r,
12093+
getters: _invisibleGetters['Tag']!,
12094+
),
1208812095
);
1208912096
},
1209012097
),
@@ -17189,7 +17196,14 @@ class _Renderer_ModelElement extends RendererBase<ModelElement> {
1718917196
StringSink sink,
1719017197
) {
1719117198
return c.tags.map(
17192-
(e) => _render_Tag(e, ast, r.template, sink, parent: r),
17199+
(e) => renderSimple(
17200+
e,
17201+
ast,
17202+
r.template,
17203+
sink,
17204+
parent: r,
17205+
getters: _invisibleGetters['Tag']!,
17206+
),
1719317207
);
1719417208
},
1719517209
),
@@ -21195,167 +21209,6 @@ class _Renderer_String extends RendererBase<String> {
2119521209
}
2119621210
}
2119721211

21198-
void _render_Tag(
21199-
Tag context,
21200-
List<MustachioNode> ast,
21201-
Template template,
21202-
StringSink sink, {
21203-
RendererBase<Object>? parent,
21204-
}) {
21205-
var renderer = _Renderer_Tag(context, parent, template, sink);
21206-
renderer.renderBlock(ast);
21207-
}
21208-
21209-
class _Renderer_Tag extends RendererBase<Tag> {
21210-
static final Map<Type, Object> _propertyMapCache = {};
21211-
static Map<String, Property<CT_>> propertyMap<CT_ extends Tag>() =>
21212-
_propertyMapCache.putIfAbsent(
21213-
CT_,
21214-
() => {
21215-
..._Renderer_Object.propertyMap<CT_>(),
21216-
'description': Property(
21217-
getValue: (CT_ c) => c.description,
21218-
renderVariable:
21219-
(CT_ c, Property<CT_> self, List<String> remainingNames) {
21220-
if (remainingNames.isEmpty) {
21221-
return self.getValue(c).toString();
21222-
}
21223-
var name = remainingNames.first;
21224-
var nextProperty = _Renderer_String.propertyMap()
21225-
.getValue(name);
21226-
return nextProperty.renderVariable(
21227-
self.getValue(c) as String,
21228-
nextProperty,
21229-
[...remainingNames.skip(1)],
21230-
);
21231-
},
21232-
21233-
isNullValue: (CT_ c) => c.description == null,
21234-
21235-
renderValue:
21236-
(
21237-
CT_ c,
21238-
RendererBase<CT_> r,
21239-
List<MustachioNode> ast,
21240-
StringSink sink,
21241-
) {
21242-
_render_String(
21243-
c.description!,
21244-
ast,
21245-
r.template,
21246-
sink,
21247-
parent: r,
21248-
);
21249-
},
21250-
),
21251-
'label': Property(
21252-
getValue: (CT_ c) => c.label,
21253-
renderVariable:
21254-
(CT_ c, Property<CT_> self, List<String> remainingNames) {
21255-
if (remainingNames.isEmpty) {
21256-
return self.getValue(c).toString();
21257-
}
21258-
var name = remainingNames.first;
21259-
var nextProperty = _Renderer_String.propertyMap()
21260-
.getValue(name);
21261-
return nextProperty.renderVariable(
21262-
self.getValue(c) as String,
21263-
nextProperty,
21264-
[...remainingNames.skip(1)],
21265-
);
21266-
},
21267-
21268-
isNullValue: (CT_ c) => false,
21269-
21270-
renderValue:
21271-
(
21272-
CT_ c,
21273-
RendererBase<CT_> r,
21274-
List<MustachioNode> ast,
21275-
StringSink sink,
21276-
) {
21277-
_render_String(c.label, ast, r.template, sink, parent: r);
21278-
},
21279-
),
21280-
'name': Property(
21281-
getValue: (CT_ c) => c.name,
21282-
renderVariable:
21283-
(CT_ c, Property<CT_> self, List<String> remainingNames) {
21284-
if (remainingNames.isEmpty) {
21285-
return self.getValue(c).toString();
21286-
}
21287-
var name = remainingNames.first;
21288-
var nextProperty = _Renderer_String.propertyMap()
21289-
.getValue(name);
21290-
return nextProperty.renderVariable(
21291-
self.getValue(c) as String,
21292-
nextProperty,
21293-
[...remainingNames.skip(1)],
21294-
);
21295-
},
21296-
21297-
isNullValue: (CT_ c) => false,
21298-
21299-
renderValue:
21300-
(
21301-
CT_ c,
21302-
RendererBase<CT_> r,
21303-
List<MustachioNode> ast,
21304-
StringSink sink,
21305-
) {
21306-
_render_String(c.name, ast, r.template, sink, parent: r);
21307-
},
21308-
),
21309-
'url': Property(
21310-
getValue: (CT_ c) => c.url,
21311-
renderVariable:
21312-
(CT_ c, Property<CT_> self, List<String> remainingNames) {
21313-
if (remainingNames.isEmpty) {
21314-
return self.getValue(c).toString();
21315-
}
21316-
var name = remainingNames.first;
21317-
var nextProperty = _Renderer_String.propertyMap()
21318-
.getValue(name);
21319-
return nextProperty.renderVariable(
21320-
self.getValue(c) as String,
21321-
nextProperty,
21322-
[...remainingNames.skip(1)],
21323-
);
21324-
},
21325-
21326-
isNullValue: (CT_ c) => c.url == null,
21327-
21328-
renderValue:
21329-
(
21330-
CT_ c,
21331-
RendererBase<CT_> r,
21332-
List<MustachioNode> ast,
21333-
StringSink sink,
21334-
) {
21335-
_render_String(c.url!, ast, r.template, sink, parent: r);
21336-
},
21337-
),
21338-
},
21339-
)
21340-
as Map<String, Property<CT_>>;
21341-
21342-
_Renderer_Tag(
21343-
Tag context,
21344-
RendererBase<Object>? parent,
21345-
Template template,
21346-
StringSink sink,
21347-
) : super(context, parent, template, sink);
21348-
21349-
@override
21350-
Property<Tag>? getProperty(String key) {
21351-
if (propertyMap<Tag>().containsKey(key)) {
21352-
return propertyMap<Tag>()[key];
21353-
} else {
21354-
return null;
21355-
}
21356-
}
21357-
}
21358-
2135921212
class _Renderer_TemplateData<T extends Documentable>
2136021213
extends RendererBase<TemplateData<T>> {
2136121214
static final Map<Type, Object> _propertyMapCache = {};
@@ -25834,6 +25687,7 @@ const _invisibleGetters = {
2583425687
'variable3',
2583525688
},
2583625689
'Scope': {'hashCode', 'runtimeType'},
25690+
'Tag': {'description', 'hashCode', 'label', 'name', 'runtimeType', 'url'},
2583725691
'TemplateOptions': {
2583825692
'customFooterContent',
2583925693
'customHeaderContent',

lib/src/model/tag.dart

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
/// An abstraction for a tags (e.g. for 'chips') to notify the user that the
6+
/// documentation should be specially interpreted.
7+
class Tag {
8+
/// The description of this tag.
9+
String? description;
10+
11+
/// A URL containing more information about this tag or `null` if there
12+
/// is none.
13+
String? url;
14+
15+
/// The name of this tag.
16+
final String name;
17+
18+
Tag(this.name, this.description, this.url);
19+
20+
/// The rendered label for this tag.
21+
String get label {
22+
final buffer = StringBuffer();
23+
final url = this.url;
24+
25+
if (url != null) {
26+
buffer.write('<a href="');
27+
buffer.write(url);
28+
buffer.write('"');
29+
} else {
30+
buffer.write('<span');
31+
}
32+
33+
buffer.write(' class="feature feature-');
34+
buffer.writeAll(name.toLowerCase().split(' '), '-');
35+
buffer.write('" title="');
36+
buffer.write(description);
37+
buffer.write('">');
38+
buffer.write(name);
39+
40+
if (url != null) {
41+
buffer.write('</a>');
42+
} else {
43+
buffer.write('</span>');
44+
}
45+
46+
return buffer.toString();
47+
}
48+
}

lib/templates/_tags.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{{#hasTags}}
2+
{{#tags}}
3+
{{{label}}}
4+
{{/tags}}
5+
{{/hasTags}}

0 commit comments

Comments
 (0)