@@ -11,6 +11,8 @@ import 'package:meta/meta.dart' as meta;
1111
1212/// Render HTML in an extended vertical format using <ol> tag.
1313class ParameterRendererHtmlList extends ParameterRendererHtml {
14+ const ParameterRendererHtmlList ();
15+
1416 @override
1517 String listItem (String listItem) => '<li>$listItem </li>\n ' ;
1618 @override
@@ -21,6 +23,8 @@ class ParameterRendererHtmlList extends ParameterRendererHtml {
2123
2224/// Render HTML suitable for a single, wrapped line.
2325class ParameterRendererHtml extends ParameterRenderer {
26+ const ParameterRendererHtml ();
27+
2428 @override
2529 String listItem (String listItem) => listItem;
2630 @override
@@ -50,6 +54,8 @@ class ParameterRendererHtml extends ParameterRenderer {
5054}
5155
5256class ParameterRendererMd extends ParameterRenderer {
57+ const ParameterRendererMd ();
58+
5359 @override
5460 String annotation (String annotation) => annotation;
5561
@@ -79,6 +85,8 @@ class ParameterRendererMd extends ParameterRenderer {
7985}
8086
8187abstract class ParameterRenderer {
88+ const ParameterRenderer ();
89+
8290 String listItem (String item);
8391 String orderedList (String listItems);
8492 String annotation (String annotation);
@@ -97,40 +105,40 @@ abstract class ParameterRenderer {
97105 parameters.where ((Parameter p) => p.isOptionalPositional).toList ();
98106 var namedParams = parameters.where ((Parameter p) => p.isNamed).toList ();
99107
100- var positional = '' , optional = '' , named = '' ;
108+ var output = StringBuffer () ;
101109 if (positionalParams.isNotEmpty) {
102- positional = _linkedParameterSublist (positionalParams,
110+ _renderLinkedParameterSublist (positionalParams, output ,
103111 trailingComma:
104112 optionalPositionalParams.isNotEmpty || namedParams.isNotEmpty,
105113 showMetadata: showMetadata,
106114 showNames: showNames);
107115 }
108116 if (optionalPositionalParams.isNotEmpty) {
109- optional = _linkedParameterSublist (optionalPositionalParams,
117+ _renderLinkedParameterSublist (optionalPositionalParams, output ,
110118 trailingComma: namedParams.isNotEmpty,
111119 openBracket: '[' ,
112120 closeBracket: ']' ,
113121 showMetadata: showMetadata,
114122 showNames: showNames);
115123 }
116124 if (namedParams.isNotEmpty) {
117- named = _linkedParameterSublist (namedParams,
125+ _renderLinkedParameterSublist (namedParams, output ,
118126 trailingComma: false ,
119127 openBracket: '{' ,
120128 closeBracket: '}' ,
121129 showMetadata: showMetadata,
122130 showNames: showNames);
123131 }
124- return orderedList (positional + optional + named );
132+ return orderedList (output. toString () );
125133 }
126134
127- String _linkedParameterSublist (List <Parameter > parameters,
135+ void _renderLinkedParameterSublist (
136+ List <Parameter > parameters, StringBuffer output,
128137 {@meta .required bool trailingComma,
129138 String openBracket = '' ,
130139 String closeBracket = '' ,
131- showMetadata = true ,
132- showNames = true }) {
133- var builder = StringBuffer ();
140+ bool showMetadata = true ,
141+ bool showNames = true }) {
134142 for (var p in parameters) {
135143 var prefix = '' ;
136144 var suffix = '' ;
@@ -143,24 +151,31 @@ abstract class ParameterRenderer {
143151 } else {
144152 suffix += ', ' ;
145153 }
146- var renderedParam =
147- _renderParam (p, showMetadata: showMetadata, showNames: showNames);
148- builder.write (
149- listItem (parameter (prefix + renderedParam + suffix, p.htmlId)));
154+ var renderedParam = _renderParam (p,
155+ prefix: prefix,
156+ suffix: suffix,
157+ showMetadata: showMetadata,
158+ showNames: showNames);
159+ output.write (listItem (parameter (renderedParam, p.htmlId)));
150160 }
151- return builder.toString ();
152161 }
153162
154- String _renderParam (Parameter param,
155- {showMetadata = true , showNames = true }) {
163+ String _renderParam (
164+ Parameter param, {
165+ @meta .required String prefix,
166+ @meta .required String suffix,
167+ bool showMetadata = true ,
168+ bool showNames = true ,
169+ }) {
156170 var buf = StringBuffer ();
171+ buf.write (prefix);
157172 var paramModelType = param.modelType;
158173
159174 if (showMetadata && param.hasAnnotations) {
160- buf. write ( param.annotations
161- . map ((a) => annotation (a.linkedNameWithParameters))
162- . join (' ' ) +
163- ' ' );
175+ for ( var a in param.annotations) {
176+ buf. write ( annotation (a.linkedNameWithParameters));
177+ buf. write (' ' );
178+ }
164179 }
165180 if (param.isRequiredNamed) {
166181 buf.write (required ('required' ) + ' ' );
@@ -217,6 +232,8 @@ abstract class ParameterRenderer {
217232 buf.write (' = ' );
218233 buf.write (defaultValue (param.defaultValue));
219234 }
235+
236+ buf.write (suffix);
220237 return buf.toString ();
221238 }
222239}
0 commit comments