Skip to content

Commit d25dfca

Browse files
authored
Remove LanguageFeatureRenderer. (#3686)
1 parent d8e7f99 commit d25dfca

5 files changed

+35
-76
lines changed

lib/src/model/container_modifiers.dart

+2-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:dartdoc/src/model/language_feature.dart';
6-
import 'package:dartdoc/src/render/language_feature_renderer.dart';
76

87
/// Represents a single modifier applicable to containers.
98
class ContainerModifier implements Comparable<ContainerModifier> {
@@ -46,8 +45,7 @@ class ContainerModifier implements Comparable<ContainerModifier> {
4645
extension BuildLanguageFeatureSet on Iterable<ContainerModifier> {
4746
/// Transforms [ContainerModifiers] into a series of [LanguageFeature] objects
4847
/// suitable for rendering as chips. Assumes iterable is sorted.
49-
Iterable<LanguageFeature> asLanguageFeatureSet(
50-
LanguageFeatureRenderer languageFeatureRenderer) =>
48+
Iterable<LanguageFeature> get asLanguageFeatureSet =>
5149
where((m) => !m.hideIfPresent.any(contains))
52-
.map((m) => LanguageFeature(m.name, languageFeatureRenderer));
50+
.map((m) => LanguageFeature(m.name));
5351
}

lib/src/model/inheriting_container.dart

+1-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import 'package:dartdoc/src/model/container_modifiers.dart';
1111
import 'package:dartdoc/src/model/language_feature.dart';
1212
import 'package:dartdoc/src/model/model.dart';
1313
import 'package:dartdoc/src/model_utils.dart' as model_utils;
14-
import 'package:dartdoc/src/render/language_feature_renderer.dart';
1514
import 'package:meta/meta.dart';
1615

1716
/// A mixin to build an [InheritingContainer] capable of being constructed
@@ -99,9 +98,7 @@ abstract class InheritingContainer extends Container
9998

10099
@override
101100
late final List<LanguageFeature> displayedLanguageFeatures =
102-
containerModifiers
103-
.asLanguageFeatureSet(const LanguageFeatureRendererHtml())
104-
.toList();
101+
containerModifiers.asLanguageFeatureSet.toList();
105102

106103
late final List<ModelElement> _allModelElements = () {
107104
_inheritedElementsCache = _inheritedElements;

lib/src/model/language_feature.dart

+28-7
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:dartdoc/src/render/language_feature_renderer.dart';
6-
75
const Map<String, String> _featureDescriptions = {
86
'sealed':
97
'The direct subtypes of this class will be checked for exhaustiveness in switches.',
@@ -35,13 +33,36 @@ class LanguageFeature {
3533
String? get featureUrl => _featureUrls[name];
3634

3735
/// The rendered label for this language feature.
38-
String get featureLabel => _featureRenderer.renderLanguageFeatureLabel(this);
36+
String get featureLabel {
37+
final buffer = StringBuffer();
38+
final url = featureUrl;
39+
40+
if (url != null) {
41+
buffer.write('<a href="');
42+
buffer.write(url);
43+
buffer.write('"');
44+
} else {
45+
buffer.write('<span');
46+
}
47+
48+
buffer.write(' class="feature feature-');
49+
buffer.writeAll(name.toLowerCase().split(' '), '-');
50+
buffer.write('" title="');
51+
buffer.write(featureDescription);
52+
buffer.write('">');
53+
buffer.write(name);
54+
55+
if (url != null) {
56+
buffer.write('</a>');
57+
} else {
58+
buffer.write('</span>');
59+
}
60+
61+
return buffer.toString();
62+
}
3963

4064
/// The name of this language feature.
4165
final String name;
4266

43-
final LanguageFeatureRenderer _featureRenderer;
44-
45-
LanguageFeature(this.name, this._featureRenderer)
46-
: assert(_featureDescriptions.containsKey(name));
67+
LanguageFeature(this.name) : assert(_featureDescriptions.containsKey(name));
4768
}

lib/src/render/language_feature_renderer.dart

-49
This file was deleted.

test/container_modifiers_test.dart

+4-12
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@
44

55
import 'package:dartdoc/src/model/container_modifiers.dart';
66
import 'package:dartdoc/src/model/language_feature.dart';
7-
import 'package:dartdoc/src/render/language_feature_renderer.dart';
87
import 'package:test/test.dart';
98

10-
class TestChipRenderer extends LanguageFeatureRenderer {
11-
@override
12-
String renderLanguageFeatureLabel(LanguageFeature l) => l.name;
13-
}
14-
159
extension TestChipsRenderer on Iterable<LanguageFeature> {
16-
String asRenderedString() => map((l) => l.featureLabel).join(' ');
10+
String asRenderedString() => map((l) => l.name).join(' ');
1711
}
1812

1913
void main() {
@@ -24,20 +18,18 @@ void main() {
2418
ContainerModifier.interface,
2519
ContainerModifier.abstract
2620
]..sort();
27-
expect(l.asLanguageFeatureSet(TestChipRenderer()).asRenderedString(),
21+
expect(l.asLanguageFeatureSet.asRenderedString(),
2822
equals('abstract base interface'));
2923
});
3024

3125
test('hide abstract on sealed', () {
3226
var l = [ContainerModifier.abstract, ContainerModifier.sealed]..sort();
33-
expect(l.asLanguageFeatureSet(TestChipRenderer()).asRenderedString(),
34-
equals('sealed'));
27+
expect(l.asLanguageFeatureSet.asRenderedString(), equals('sealed'));
3528
});
3629

3730
test('empty', () {
3831
var l = <ContainerModifier>[];
39-
expect(l.asLanguageFeatureSet(TestChipRenderer()).asRenderedString(),
40-
equals(''));
32+
expect(l.asLanguageFeatureSet.asRenderedString(), equals(''));
4133
});
4234
});
4335
}

0 commit comments

Comments
 (0)