@@ -9,193 +9,11 @@ import 'dart:io';
9
9
10
10
import 'package:analyzer/dart/ast/ast.dart' ;
11
11
import 'package:analyzer/dart/element/element.dart' ;
12
- import 'package:analyzer/dart/element/type.dart' ;
13
12
import 'package:analyzer/src/dart/ast/utilities.dart' ;
14
13
import 'package:dartdoc/src/model/model.dart' ;
15
- import 'package:dartdoc/src/element_type.dart' ;
16
14
17
15
final Map <String , String > _fileContents = < String , String > {};
18
16
19
- /// Render HTML in an extended vertical format using <ol> tag.
20
- class ParameterRendererHtmlList extends ParameterRendererHtml {
21
- ParameterRendererHtmlList ({bool showMetadata = true , bool showNames = true })
22
- : super (showMetadata: showMetadata, showNames: showNames);
23
- @override
24
- String listItem (String listItem) => '<li>$listItem </li>\n ' ;
25
- @override
26
- // TODO(jcollins-g): consider comma separated lists and more advanced css.
27
- String orderedList (String listItems) =>
28
- '<ol class="parameter-list">$listItems </ol>\n ' ;
29
- }
30
-
31
- /// Render HTML suitable for a single, wrapped line.
32
- class ParameterRendererHtml extends ParameterRenderer {
33
- @override
34
- final bool showMetadata;
35
- @override
36
- final bool showNames;
37
- ParameterRendererHtml ({this .showMetadata = true , this .showNames = true });
38
-
39
- @override
40
- String listItem (String listItem) => '${listItem }<wbr>' ;
41
- @override
42
- String orderedList (String listItems) => listItems;
43
- @override
44
- String annotation (String annotation) => '<span>$annotation </span>' ;
45
- @override
46
- String covariant (String covariant ) => '<span>$covariant </span>' ;
47
- @override
48
- String defaultValue (String defaultValue) =>
49
- '<span class="default-value">$defaultValue </span>' ;
50
- @override
51
- String parameter (String parameter, String htmlId) =>
52
- '<span class="parameter" id="${htmlId }">$parameter </span>' ;
53
- @override
54
- String parameterName (String parameterName) =>
55
- '<span class="parameter-name">$parameterName </span>' ;
56
- @override
57
- String typeName (String typeName) =>
58
- '<span class="type-annotation">$typeName </span>' ;
59
- @override
60
- String required (String required ) => '<span>$required </span>' ;
61
- }
62
-
63
- abstract class ParameterRenderer {
64
- bool get showMetadata;
65
- bool get showNames;
66
-
67
- String listItem (String item);
68
- String orderedList (String listItems);
69
- String annotation (String annotation);
70
- String covariant (String covariant );
71
- String defaultValue (String defaultValue);
72
- String parameter (String parameter, String id);
73
- String parameterName (String parameterName);
74
- String typeName (String typeName);
75
- String required (String required );
76
-
77
- String _linkedParameterSublist (List <Parameter > parameters, bool trailingComma,
78
- {String thisOpenBracket = '' , String thisCloseBracket = '' }) {
79
- StringBuffer builder = StringBuffer ();
80
- parameters.forEach ((p) {
81
- String prefix = '' ;
82
- String suffix = '' ;
83
- if (identical (p, parameters.first)) {
84
- prefix = thisOpenBracket;
85
- }
86
- if (identical (p, parameters.last)) {
87
- suffix += thisCloseBracket;
88
- if (trailingComma) suffix += ', ' ;
89
- } else {
90
- suffix += ', ' ;
91
- }
92
- builder.write (
93
- listItem (parameter (prefix + renderParam (p) + suffix, p.htmlId)));
94
- });
95
- return builder.toString ();
96
- }
97
-
98
- String linkedParams (List <Parameter > parameters) {
99
- List <Parameter > positionalParams =
100
- parameters.where ((Parameter p) => p.isRequiredPositional).toList ();
101
- List <Parameter > optionalPositionalParams =
102
- parameters.where ((Parameter p) => p.isOptionalPositional).toList ();
103
- List <Parameter > namedParams =
104
- parameters.where ((Parameter p) => p.isNamed).toList ();
105
-
106
- String positional = '' , optional = '' , named = '' ;
107
- if (positionalParams.isNotEmpty) {
108
- positional = _linkedParameterSublist (positionalParams,
109
- optionalPositionalParams.isNotEmpty || namedParams.isNotEmpty);
110
- }
111
- if (optionalPositionalParams.isNotEmpty) {
112
- optional = _linkedParameterSublist (
113
- optionalPositionalParams, namedParams.isNotEmpty,
114
- thisOpenBracket: '[' , thisCloseBracket: ']' );
115
- }
116
- if (namedParams.isNotEmpty) {
117
- named = _linkedParameterSublist (namedParams, false ,
118
- thisOpenBracket: '{' , thisCloseBracket: '}' );
119
- }
120
- return (orderedList (positional + optional + named));
121
- }
122
-
123
- String renderParam (Parameter param) {
124
- StringBuffer buf = StringBuffer ();
125
- ElementType paramModelType = param.modelType;
126
-
127
- if (showMetadata && param.hasAnnotations) {
128
- buf.write (param.annotations.map (annotation).join (' ' ) + ' ' );
129
- }
130
- if (param.isRequiredNamed) {
131
- buf.write (required ('required' ) + ' ' );
132
- }
133
- if (param.isCovariant) {
134
- buf.write (covariant ('covariant' ) + ' ' );
135
- }
136
- if (paramModelType is CallableElementTypeMixin ||
137
- paramModelType.type is FunctionType ) {
138
- String returnTypeName;
139
- if (paramModelType.isTypedef) {
140
- returnTypeName = paramModelType.linkedName;
141
- } else {
142
- returnTypeName = paramModelType.createLinkedReturnTypeName ();
143
- }
144
- buf.write (typeName (returnTypeName));
145
- if (showNames) {
146
- buf.write (' ${parameterName (param .name )}' );
147
- } else if (paramModelType.isTypedef ||
148
- paramModelType is CallableAnonymousElementType ||
149
- paramModelType.type is FunctionType ) {
150
- buf.write (' ${parameterName (paramModelType .name )}' );
151
- }
152
- if (! paramModelType.isTypedef && paramModelType is DefinedElementType ) {
153
- buf.write ('(' );
154
- buf.write (linkedParams (paramModelType.element.parameters));
155
- buf.write (')' );
156
- }
157
- if (! paramModelType.isTypedef && paramModelType.type is FunctionType ) {
158
- buf.write ('(' );
159
- buf.write (
160
- linkedParams ((paramModelType as UndefinedElementType ).parameters));
161
- buf.write (')' );
162
- }
163
- } else if (param.modelType != null ) {
164
- String linkedTypeName = paramModelType.linkedName;
165
- if (linkedTypeName.isNotEmpty) {
166
- buf.write (typeName (linkedTypeName));
167
- if (showNames && param.name.isNotEmpty) {
168
- buf.write (' ' );
169
- }
170
- }
171
- if (showNames && param.name.isNotEmpty) {
172
- buf.write (parameterName (param.name));
173
- }
174
- }
175
-
176
- if (param.hasDefaultValue) {
177
- if (param.isNamed) {
178
- buf.write (': ' );
179
- } else {
180
- buf.write (' = ' );
181
- }
182
- buf.write (defaultValue (param.defaultValue));
183
- }
184
- return buf.toString ();
185
- }
186
- }
187
-
188
- String linkedParams (List <Parameter > parameters,
189
- {showMetadata = true , showNames = true , asList = false }) {
190
- if (asList) {
191
- return ParameterRendererHtmlList (
192
- showMetadata: showMetadata, showNames: showNames)
193
- .linkedParams (parameters);
194
- }
195
- return ParameterRendererHtml (showMetadata: showMetadata, showNames: showNames)
196
- .linkedParams (parameters);
197
- }
198
-
199
17
/// Returns the [AstNode] for a given [Element] .
200
18
///
201
19
/// Uses a precomputed map of [element.source.fullName] to [CompilationUnit]
0 commit comments