Skip to content

Commit b001a15

Browse files
authored
Remove ModelElementRenderer. (#3717)
1 parent e8ee798 commit b001a15

File tree

5 files changed

+102
-141
lines changed

5 files changed

+102
-141
lines changed

lib/src/generator/templates.runtime_renderers.dart

-16
Original file line numberDiff line numberDiff line change
@@ -4215,20 +4215,6 @@ class _Renderer_DocumentationComment
42154215
self.renderSimpleVariable(c, remainingNames, 'bool'),
42164216
getBool: (CT_ c) => c.hasNodoc,
42174217
),
4218-
'modelElementRenderer': Property(
4219-
getValue: (CT_ c) => c.modelElementRenderer,
4220-
renderVariable: (CT_ c, Property<CT_> self,
4221-
List<String> remainingNames) =>
4222-
self.renderSimpleVariable(
4223-
c, remainingNames, 'ModelElementRenderer'),
4224-
isNullValue: (CT_ c) => false,
4225-
renderValue: (CT_ c, RendererBase<CT_> r,
4226-
List<MustachioNode> ast, StringSink sink) {
4227-
renderSimple(c.modelElementRenderer, ast, r.template, sink,
4228-
parent: r,
4229-
getters: _invisibleGetters['ModelElementRenderer']!);
4230-
},
4231-
),
42324218
'needsPrecache': Property(
42334219
getValue: (CT_ c) => c.needsPrecache,
42344220
renderVariable: (CT_ c, Property<CT_> self,
@@ -16140,7 +16126,6 @@ const _invisibleGetters = {
1614016126
'fullyQualifiedNameWithoutLibrary',
1614116127
'hasDocumentationComment',
1614216128
'hasNodoc',
16143-
'modelElementRenderer',
1614416129
'needsPrecache',
1614516130
'pathContext',
1614616131
'sourceFileName'
@@ -16574,7 +16559,6 @@ const _invisibleGetters = {
1657416559
'runtimeType',
1657516560
'superclassConstraints'
1657616561
},
16577-
'ModelElementRenderer': {'hashCode', 'runtimeType'},
1657816562
'ModelNode': {'hashCode', 'runtimeType', 'sourceCode'},
1657916563
'PackageGraph': {
1658016564
'allConstructedModelElements',

lib/src/model/documentation_comment.dart

+58-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import 'package:dartdoc/src/model/documentation.dart';
77
import 'package:dartdoc/src/model/inheritable.dart';
88
import 'package:dartdoc/src/model/locatable.dart';
99
import 'package:dartdoc/src/model/source_code_mixin.dart';
10-
import 'package:dartdoc/src/render/model_element_renderer.dart';
1110
import 'package:dartdoc/src/utils.dart';
1211
import 'package:dartdoc/src/warnings.dart';
1312
import 'package:meta/meta.dart';
@@ -136,8 +135,6 @@ mixin DocumentationComment
136135

137136
p.Context get pathContext;
138137

139-
ModelElementRenderer get modelElementRenderer;
140-
141138
static const _allDirectiveNames = {
142139
'animation',
143140
'end-inject-html',
@@ -360,7 +357,29 @@ mixin DocumentationComment
360357
}
361358
var youTubeId = url.group(url.groupCount)!;
362359

363-
return modelElementRenderer.renderYoutubeUrl(youTubeId, width, height);
360+
// Blank lines before and after, and no indenting at the beginning and end
361+
// is needed so that Markdown doesn't confuse this with code, so be
362+
// careful of whitespace here.
363+
return '''
364+
365+
<iframe src="https://www.youtube.com/embed/$youTubeId?rel=0"
366+
title="YouTube video player"
367+
frameborder="0"
368+
allow="accelerometer;
369+
autoplay;
370+
clipboard-write;
371+
encrypted-media;
372+
gyroscope;
373+
picture-in-picture"
374+
allowfullscreen=""
375+
style="max-width: ${width}px;
376+
max-height: ${height}px;
377+
width: 100%;
378+
height: 100%;
379+
aspect-ratio: $width / $height;">
380+
</iframe>
381+
382+
'''; // Must end at start of line, or following inline text will be indented.
364383
});
365384
}
366385

@@ -477,8 +496,41 @@ mixin DocumentationComment
477496
}
478497
var overlayId = '${uniqueId}_play_button_';
479498

480-
return modelElementRenderer.renderAnimation(
481-
uniqueId, width, height, movieUrl, overlayId);
499+
return '''
500+
501+
<div style="position: relative;">
502+
<div id="$overlayId"
503+
onclick="var $uniqueId = document.getElementById('$uniqueId');
504+
if ($uniqueId.paused) {
505+
$uniqueId.play();
506+
this.style.display = 'none';
507+
} else {
508+
$uniqueId.pause();
509+
this.style.display = 'block';
510+
}"
511+
style="position:absolute;
512+
width:${width}px;
513+
height:${height}px;
514+
z-index:100000;
515+
background-position: center;
516+
background-repeat: no-repeat;
517+
background-image: url(static-assets/play_button.svg);">
518+
</div>
519+
<video id="$uniqueId"
520+
style="width:${width}px; height:${height}px;"
521+
onclick="var $overlayId = document.getElementById('$overlayId');
522+
if (this.paused) {
523+
this.play();
524+
$overlayId.style.display = 'none';
525+
} else {
526+
this.pause();
527+
$overlayId.style.display = 'block';
528+
}" loop>
529+
<source src="$movieUrl" type="video/mp4"/>
530+
</video>
531+
</div>
532+
533+
'''; // Must end at start of line, or following inline text will be indented.
482534
});
483535
}
484536

lib/src/model/model_element.dart

+10-8
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import 'package:dartdoc/src/model/feature_set.dart';
2323
import 'package:dartdoc/src/model/model.dart';
2424
import 'package:dartdoc/src/model/prefix.dart';
2525
import 'package:dartdoc/src/model_utils.dart' as utils;
26-
import 'package:dartdoc/src/render/model_element_renderer.dart';
2726
import 'package:dartdoc/src/render/parameter_renderer.dart';
2827
import 'package:dartdoc/src/runtime_stats.dart';
2928
import 'package:dartdoc/src/source_linker.dart';
@@ -413,7 +412,14 @@ abstract class ModelElement extends Canonicalization
413412
};
414413
}
415414

416-
String get attributesAsString => modelElementRenderer.renderAttributes(this);
415+
String get attributesAsString {
416+
var allAttributes = attributes.toList(growable: false)
417+
..sort(byAttributeOrdering);
418+
return allAttributes
419+
.map((f) =>
420+
'<span class="${f.cssClassName}">${f.linkedNameWithParameters}</span>')
421+
.join();
422+
}
417423

418424
// True if this is a function, or if it is an type alias to a function.
419425
bool get isCallable =>
@@ -677,14 +683,10 @@ abstract class ModelElement extends Canonicalization
677683
return htmlEscape.convert(name);
678684
}
679685

680-
return modelElementRenderer.renderLinkedName(this);
686+
var cssClass = isDeprecated ? ' class="deprecated"' : '';
687+
return '<a$cssClass href="$href">$displayName</a>';
681688
}();
682689

683-
@visibleForTesting
684-
@override
685-
ModelElementRenderer get modelElementRenderer =>
686-
const ModelElementRendererHtml();
687-
688690
ParameterRenderer get _parameterRenderer => const ParameterRendererHtml();
689691

690692
ParameterRenderer get _parameterRendererDetailed =>

lib/src/render/model_element_renderer.dart

-104
This file was deleted.

test/documentation_comment_test.dart

+34-7
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,43 @@ More text.'''));
111111
''');
112112

113113
expectNoWarnings();
114-
var rendered = libraryModel.modelElementRenderer.renderAnimation(
115-
'barHerderAnimation',
116-
100,
117-
200,
118-
Uri.parse('http://host/path/to/video.mp4'),
119-
'barHerderAnimation_play_button_');
120114
expect(doc, equals('''
121115
Text.
122116
123-
$rendered
117+
118+
<div style="position: relative;">
119+
<div id="barHerderAnimation_play_button_"
120+
onclick="var barHerderAnimation = document.getElementById('barHerderAnimation');
121+
if (barHerderAnimation.paused) {
122+
barHerderAnimation.play();
123+
this.style.display = 'none';
124+
} else {
125+
barHerderAnimation.pause();
126+
this.style.display = 'block';
127+
}"
128+
style="position:absolute;
129+
width:100px;
130+
height:200px;
131+
z-index:100000;
132+
background-position: center;
133+
background-repeat: no-repeat;
134+
background-image: url(static-assets/play_button.svg);">
135+
</div>
136+
<video id="barHerderAnimation"
137+
style="width:100px; height:200px;"
138+
onclick="var barHerderAnimation_play_button_ = document.getElementById('barHerderAnimation_play_button_');
139+
if (this.paused) {
140+
this.play();
141+
barHerderAnimation_play_button_.style.display = 'none';
142+
} else {
143+
this.pause();
144+
barHerderAnimation_play_button_.style.display = 'block';
145+
}" loop>
146+
<source src="http://host/path/to/video.mp4" type="video/mp4"/>
147+
</video>
148+
</div>
149+
150+
124151
125152
End text.'''));
126153
}

0 commit comments

Comments
 (0)