@@ -11,7 +11,7 @@ import 'package:analyzer/dart/element/element.dart';
1111import 'package:analyzer/dart/element/nullability_suffix.dart' ;
1212import 'package:analyzer/dart/element/type.dart' ;
1313import 'package:dartdoc/src/model/model.dart' ;
14- import 'package:dartdoc/src/render/parameter_renderer .dart' ;
14+ import 'package:dartdoc/src/render/element_type_renderer .dart' ;
1515
1616/// Base class representing a type in Dartdoc. It wraps a [DartType] , and
1717/// may link to a [ModelElement] .
@@ -143,13 +143,8 @@ class FunctionTypeElementType extends UndefinedElementType {
143143 @override
144144 String get linkedName {
145145 if (_linkedName == null ) {
146- StringBuffer buf = StringBuffer ();
147- buf.write ('${returnType .linkedName } ' );
148- buf.write ('${nameWithGenerics }' );
149- buf.write ('<span class="signature">' );
150- buf.write ('(${ParameterRendererHtml ().renderLinkedParams (parameters )})' );
151- buf.write ('</span>' );
152- _linkedName = buf.toString ();
146+ _linkedName =
147+ FunctionTypeElementTypeRendererHtml ().renderLinkedName (this );
153148 }
154149 return _linkedName;
155150 }
@@ -162,17 +157,8 @@ class FunctionTypeElementType extends UndefinedElementType {
162157 @override
163158 String get nameWithGenerics {
164159 if (_nameWithGenerics == null ) {
165- StringBuffer buf = StringBuffer ();
166- buf.write (name);
167- if ((type as FunctionType ).typeFormals.isNotEmpty) {
168- if (! typeFormals.every ((t) => t.name == 'dynamic' )) {
169- buf.write ('<<wbr><span class="type-parameter">' );
170- buf.writeAll (typeFormals.map ((t) => t.name),
171- '</span>, <span class="type-parameter">' );
172- buf.write ('</span>>' );
173- }
174- }
175- _nameWithGenerics = buf.toString ();
160+ _nameWithGenerics =
161+ FunctionTypeElementTypeRendererHtml ().renderNameWithGenerics (this );
176162 }
177163 return _nameWithGenerics;
178164 }
@@ -198,21 +184,8 @@ class ParameterizedElementType extends DefinedElementType {
198184 @override
199185 String get linkedName {
200186 if (_linkedName == null ) {
201- StringBuffer buf = StringBuffer ();
202-
203- buf.write (element.linkedName);
204-
205- if (! typeArguments.every ((t) => t.name == 'dynamic' ) &&
206- typeArguments.isNotEmpty) {
207- buf.write ('<span class="signature">' );
208- buf.write ('<<wbr><span class="type-parameter">' );
209- buf.writeAll (typeArguments.map ((t) => t.linkedName),
210- '</span>, <span class="type-parameter">' );
211- buf.write ('</span>>' );
212- buf.write ('</span>' );
213- }
214-
215- _linkedName = buf.toString ();
187+ _linkedName =
188+ ParameterizedElementTypeRendererHtml ().renderLinkedName (this );
216189 }
217190 return _linkedName;
218191 }
@@ -221,18 +194,8 @@ class ParameterizedElementType extends DefinedElementType {
221194 @override
222195 String get nameWithGenerics {
223196 if (_nameWithGenerics == null ) {
224- StringBuffer buf = StringBuffer ();
225-
226- buf.write (element.name);
227-
228- if (! typeArguments.every ((t) => t.name == 'dynamic' ) &&
229- typeArguments.isNotEmpty) {
230- buf.write ('<<wbr><span class="type-parameter">' );
231- buf.writeAll (typeArguments.map ((t) => t.nameWithGenerics),
232- '</span>, <span class="type-parameter">' );
233- buf.write ('</span>>' );
234- }
235- _nameWithGenerics = buf.toString ();
197+ _nameWithGenerics =
198+ ParameterizedElementTypeRendererHtml ().renderNameWithGenerics (this );
236199 }
237200 return _nameWithGenerics;
238201 }
@@ -246,17 +209,12 @@ class TypeParameterElementType extends DefinedElementType {
246209 @override
247210 String get linkedName => name;
248211
249- String _nameWithGenerics;
250212 @override
251- String get nameWithGenerics {
252- if (_nameWithGenerics == null ) {
253- _nameWithGenerics = name;
254- }
255- return _nameWithGenerics;
256- }
213+ String get nameWithGenerics => name;
257214
258215 @override
259216 ClassElement get _boundClassElement => interfaceType.element;
217+
260218 @override
261219 InterfaceType get interfaceType => (type as TypeParameterType ).bound;
262220}
@@ -417,9 +375,13 @@ class CallableElementType extends ParameterizedElementType
417375
418376 @override
419377 String get linkedName {
420- if (name != null && name.isNotEmpty) return super .linkedName;
421- return '${nameWithGenerics }(${ParameterRendererHtml (showNames : false ).renderLinkedParams (element .parameters ).trim ()}) → ${returnType .linkedName }' ;
378+ if (_linkedName == null ) {
379+ _linkedName = CallableElementTypeRendererHtml ().renderLinkedName (this );
380+ }
381+ return _linkedName;
422382 }
383+
384+ String get superLinkedName => super .linkedName;
423385}
424386
425387/// This is an anonymous function using the generic function syntax (declared
@@ -435,7 +397,7 @@ class CallableAnonymousElementType extends CallableElementType {
435397 String get linkedName {
436398 if (_linkedName == null ) {
437399 _linkedName =
438- '${ returnType . linkedName } ${ super . linkedName }<span class="signature">(${ ParameterRendererHtml (). renderLinkedParams ( element . parameters )})</span>' ;
400+ CallableAnonymousElementTypeRendererHtml (). renderLinkedName ( this ) ;
439401 }
440402 return _linkedName;
441403 }
0 commit comments