Skip to content

Commit 7de554f

Browse files
committed
Merge branch 'master' into show_source_for_all
2 parents 48f36a9 + 3f2aa82 commit 7de554f

File tree

123 files changed

+1203
-169
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+1203
-169
lines changed

lib/resources/styles.css

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,11 @@ footer .container-fluid {
413413
.multi-line-signature {
414414
font-size: 17px;
415415
color: #727272;
416+
}
417+
418+
.multi-line-signature .parameter {
416419
margin-left: 24px;
417-
text-indent: -24px;
420+
display: block;
418421
}
419422

420423
.breadcrumbs {

lib/src/model.dart

Lines changed: 82 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -875,12 +875,12 @@ class Field extends ModelElement
875875
void _setModelType() {
876876
if (hasGetter) {
877877
var t = _field.getter.returnType;
878-
_modelType = new ElementType(t,
879-
new ModelElement.from(t.element, package._getLibraryFor(t.element)));
878+
_modelType = new ElementType(
879+
t, new ModelElement.from(t.element, _findLibraryFor(t.element)));
880880
} else {
881881
var s = _field.setter.parameters.first.type;
882-
_modelType = new ElementType(s,
883-
new ModelElement.from(s.element, package._getLibraryFor(s.element)));
882+
_modelType = new ElementType(
883+
s, new ModelElement.from(s.element, _findLibraryFor(s.element)));
884884
}
885885
}
886886
}
@@ -1532,36 +1532,35 @@ abstract class ModelElement implements Comparable, Nameable, Documentable {
15321532

15331533
String linkedParams(
15341534
{bool showMetadata: true, bool showNames: true, String separator: ', '}) {
1535-
String renderParam(Parameter p) {
1535+
1536+
String renderParam(Parameter param, String suffix) {
15361537
StringBuffer buf = new StringBuffer();
1537-
buf.write('<span class="parameter" id="${p.htmlId}">');
1538-
if (showMetadata && p.hasAnnotations) {
1539-
buf.write('<ol class="annotation-list">');
1540-
p.annotations.forEach((String annotation) {
1541-
buf.write('<li>$annotation</li>');
1538+
buf.write('<span class="parameter" id="${param.htmlId}">');
1539+
if (showMetadata && param.hasAnnotations) {
1540+
param.annotations.forEach((String annotation) {
1541+
buf.write('<span>@$annotation</span> ');
15421542
});
1543-
buf.write('</ol> ');
15441543
}
1545-
if (p.modelType.isFunctionType) {
1544+
if (param.modelType.isFunctionType) {
15461545
var returnTypeName;
1547-
bool isTypedef = p.modelType.element is Typedef;
1546+
bool isTypedef = param.modelType.element is Typedef;
15481547
if (isTypedef) {
1549-
returnTypeName = p.modelType.linkedName;
1548+
returnTypeName = param.modelType.linkedName;
15501549
} else {
1551-
returnTypeName = p.modelType.createLinkedReturnTypeName();
1550+
returnTypeName = param.modelType.createLinkedReturnTypeName();
15521551
}
15531552
buf.write('<span class="type-annotation">${returnTypeName}</span>');
15541553
if (showNames) {
1555-
buf.write(' <span class="parameter-name">${p.name}</span>');
1554+
buf.write(' <span class="parameter-name">${param.name}</span>');
15561555
}
15571556
if (!isTypedef) {
15581557
buf.write('(');
1559-
buf.write(p.modelType.element
1558+
buf.write(param.modelType.element
15601559
.linkedParams(showNames: showNames, showMetadata: showMetadata));
15611560
buf.write(')');
15621561
}
1563-
} else if (p.modelType != null && p.modelType.element != null) {
1564-
var mt = p.modelType;
1562+
} else if (param.modelType != null && param.modelType.element != null) {
1563+
var mt = param.modelType;
15651564
String typeName = "";
15661565
if (mt != null && !mt.isDynamic) {
15671566
typeName = mt.linkedName;
@@ -1570,46 +1569,71 @@ abstract class ModelElement implements Comparable, Nameable, Documentable {
15701569
buf.write('<span class="type-annotation">$typeName</span> ');
15711570
}
15721571
if (showNames) {
1573-
buf.write('<span class="parameter-name">${p.name}</span>');
1572+
buf.write('<span class="parameter-name">${param.name}</span>');
15741573
}
15751574
}
15761575

1577-
if (p.hasDefaultValue) {
1578-
if (p.isOptionalNamed) {
1576+
if (param.hasDefaultValue) {
1577+
if (param.isOptionalNamed) {
15791578
buf.write(': ');
15801579
} else {
15811580
buf.write(' = ');
15821581
}
1583-
buf.write('<span class="default-value">${p.defaultValue}</span>');
1582+
buf.write('<span class="default-value">${param.defaultValue}</span>');
15841583
}
1585-
buf.write('</span>');
1584+
buf.write('${suffix}</span>');
15861585
return buf.toString();
15871586
}
15881587

1589-
String renderParams(Iterable<Parameter> params,
1590-
{String open: '', String close: ''}) {
1591-
return '$open${params.map(renderParam).join(separator)}$close';
1592-
}
1588+
List<Parameter> requiredParams =
1589+
parameters.where((Parameter p) => !p.isOptional).toList();
1590+
List<Parameter> positionalParams =
1591+
parameters.where((Parameter p) => p.isOptionalPositional).toList();
1592+
List<Parameter> namedParams =
1593+
parameters.where((Parameter p) => p.isOptionalNamed).toList();
15931594

1594-
Iterable<Parameter> requiredParams =
1595-
parameters.where((Parameter p) => !p.isOptional);
1596-
Iterable<Parameter> positionalParams =
1597-
parameters.where((Parameter p) => p.isOptionalPositional);
1598-
Iterable<Parameter> namedParams =
1599-
parameters.where((Parameter p) => p.isOptionalNamed);
1595+
StringBuffer builder = new StringBuffer();
1596+
1597+
// prefix
1598+
if (requiredParams.isEmpty && positionalParams.isNotEmpty) {
1599+
builder.write('[');
1600+
} else if (requiredParams.isEmpty && namedParams.isNotEmpty) {
1601+
builder.write('{');
1602+
}
16001603

1601-
List<String> fragments = [];
1602-
if (requiredParams.isNotEmpty) {
1603-
fragments.add(renderParams(requiredParams));
1604+
// index over params
1605+
for (Parameter param in requiredParams) {
1606+
bool isLast = param == requiredParams.last;
1607+
String ext;
1608+
if (isLast && positionalParams.isNotEmpty) {
1609+
ext = ', [';
1610+
} else if (isLast && namedParams.isNotEmpty) {
1611+
ext = ', {';
1612+
} else {
1613+
ext = isLast ? '' : ', ';
1614+
}
1615+
builder.write(renderParam(param, ext));
1616+
builder.write(' ');
16041617
}
1605-
if (positionalParams.isNotEmpty) {
1606-
fragments.add(renderParams(positionalParams, open: '[', close: ']'));
1618+
for (Parameter param in positionalParams) {
1619+
bool isLast = param == positionalParams.last;
1620+
builder.write(renderParam(param, isLast ? '' : ', '));
1621+
builder.write(' ');
16071622
}
1623+
for (Parameter param in namedParams) {
1624+
bool isLast = param == namedParams.last;
1625+
builder.write(renderParam(param, isLast ? '' : ', '));
1626+
builder.write(' ');
1627+
}
1628+
1629+
// suffix
16081630
if (namedParams.isNotEmpty) {
1609-
fragments.add(renderParams(namedParams, open: '{', close: '}'));
1631+
builder.write('}');
1632+
} else if (positionalParams.isNotEmpty) {
1633+
builder.write(']');
16101634
}
16111635

1612-
return fragments.join(separator);
1636+
return builder.toString().trim();
16131637
}
16141638

16151639
@override
@@ -1655,6 +1679,19 @@ abstract class ModelElement implements Comparable, Nameable, Documentable {
16551679
return '<a ${classContent}href="${href}">$name</a>';
16561680
}
16571681

1682+
// TODO(keertip): consolidate all the find library methods
1683+
Library _findLibraryFor(Element e) {
1684+
var element = e.getAncestor((l) => l is LibraryElement);
1685+
var lib;
1686+
if (element != null) {
1687+
lib = package.findLibraryFor(element);
1688+
}
1689+
if (lib == null) {
1690+
lib = package._getLibraryFor(e);
1691+
}
1692+
return lib;
1693+
}
1694+
16581695
// process the {@example ...} in comments and inject the example
16591696
// code into the doc commment.
16601697
// {@example core/ts/bootstrap/bootstrap.ts region='bootstrap'}
@@ -1904,12 +1941,13 @@ class Package implements Nameable, Documentable {
19041941
return null;
19051942
}
19061943

1907-
Library lib = elementLibaryMap['${e.kind}.${e.name}'];
1944+
Library lib = elementLibaryMap['${e.kind}.${e.name}.${e.enclosingElement}'];
19081945
if (lib != null) return lib;
19091946
lib =
19101947
libraries.firstWhere((l) => l.hasInExportedNamespace(e), orElse: () {});
19111948
if (lib != null) {
1912-
elementLibaryMap.putIfAbsent('${e.kind}.${e.name}', () => lib);
1949+
elementLibaryMap.putIfAbsent(
1950+
'${e.kind}.${e.name}.${e.enclosingElement}', () => lib);
19131951
return lib;
19141952
}
19151953
return new Library(e.library, this);
@@ -1933,7 +1971,7 @@ class Parameter extends ModelElement implements EnclosedElement {
19331971
: super(element, library) {
19341972
var t = _parameter.type;
19351973
_modelType = new ElementType(
1936-
t, new ModelElement.from(t.element, package._getLibraryFor(t.element)));
1974+
t, new ModelElement.from(t.element, _findLibraryFor(t.element)));
19371975
}
19381976

19391977
String get defaultValue {

pubspec.lock

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ packages:
66
name: analyzer
77
url: "https://pub.dartlang.org"
88
source: hosted
9-
version: "0.27.3-alpha.7"
9+
version: "0.27.4-alpha.18"
1010
ansicolor:
1111
description:
1212
name: ansicolor
@@ -66,7 +66,7 @@ packages:
6666
name: crypto
6767
url: "https://pub.dartlang.org"
6868
source: hosted
69-
version: "0.9.2+1"
69+
version: "2.0.1"
7070
csslib:
7171
description:
7272
name: csslib
@@ -109,6 +109,12 @@ packages:
109109
url: "https://pub.dartlang.org"
110110
source: hosted
111111
version: "3.0.2"
112+
isolate:
113+
description:
114+
name: isolate
115+
url: "https://pub.dartlang.org"
116+
source: hosted
117+
version: "0.2.2"
112118
logging:
113119
description:
114120
name: logging
@@ -162,7 +168,7 @@ packages:
162168
name: plugin
163169
url: "https://pub.dartlang.org"
164170
source: hosted
165-
version: "0.1.0"
171+
version: "0.2.0"
166172
pool:
167173
description:
168174
name: pool

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ homepage: https://github.com/dart-lang/dartdoc
77
environment:
88
sdk: '>=1.14.0 <2.0.0'
99
dependencies:
10-
analyzer: 0.27.3-alpha.7
10+
analyzer: 0.27.4-alpha.18
1111
args: ^0.13.0
1212
cli_util: ^0.0.1
1313
collection: ^1.2.0

test/model_test.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,6 +1466,12 @@ String topLevelFunction(int param1, bool param2, Cool coolBeans,
14661466
expect(params.contains('List') && params.contains('Apple'), isTrue);
14671467
});
14681468

1469+
test('commas on same param line', () {
1470+
ModelFunction method = fakeLibrary.functions.firstWhere((f) => f.name == 'paintImage1');
1471+
String params = method.linkedParams();
1472+
expect(params, contains(', </span>'));
1473+
});
1474+
14691475
test('param exported in library', () {
14701476
var param = paramFromExportLib.parameters[0];
14711477
expect(param.name, equals('helper'));

testing/test_package/lib/fake.dart

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,3 +440,30 @@ typedef int Callback2(String);
440440

441441
/// Adds another callback.
442442
void addCallback2(Callback2 callback) { }
443+
444+
const required = 'required';
445+
446+
/// Paints an image into the given rectangle in the canvas.
447+
void paintImage1({
448+
@required String canvas,
449+
@required int rect,
450+
@required ExtraSpecialList image,
451+
BaseForDocComments colorFilter,
452+
String repeat: LongFirstLine.THING
453+
}) {
454+
// nothing to do here -
455+
456+
}
457+
458+
/// Paints an image into the given rectangle in the canvas.
459+
void paintImage2(
460+
String fooParam, [
461+
@required String canvas,
462+
@required int rect,
463+
@required ExtraSpecialList image,
464+
BaseForDocComments colorFilter,
465+
String repeat = LongFirstLine.THING
466+
]) {
467+
// nothing to do here -
468+
469+
}

testing/test_package_docs/ex/Apple-class.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ <h2>Operators</h2>
283283
<h2>Methods</h2>
284284
<dl class="callables">
285285
<dt id="isGreaterThan" class="callable">
286-
<span class="name"><a href="ex/Apple/isGreaterThan.html">isGreaterThan</a></span><span class="signature">(<wbr><span class="parameter" id="isGreaterThan-param-number"><span class="type-annotation">int</span> <span class="parameter-name">number</span></span>, {<span class="parameter" id="isGreaterThan-param-check"><span class="type-annotation">int</span> <span class="parameter-name">check</span>: <span class="default-value">5</span></span>})
286+
<span class="name"><a href="ex/Apple/isGreaterThan.html">isGreaterThan</a></span><span class="signature">(<wbr><span class="parameter" id="isGreaterThan-param-number"><span class="type-annotation">int</span> <span class="parameter-name">number</span>, {</span> <span class="parameter" id="isGreaterThan-param-check"><span class="type-annotation">int</span> <span class="parameter-name">check</span>: <span class="default-value">5</span></span> })
287287
<span class="returntype parameter">&#8594; bool</span>
288288
</span>
289289
</dt>
@@ -324,7 +324,7 @@ <h2>Methods</h2>
324324
<p></p>
325325
</dd>
326326
<dt id="printMsg" class="callable">
327-
<span class="name"><a href="ex/Apple/printMsg.html">printMsg</a></span><span class="signature">(<wbr><span class="parameter" id="printMsg-param-msg"><span class="type-annotation">String</span> <span class="parameter-name">msg</span></span>, [<span class="parameter" id="printMsg-param-linebreak"><span class="type-annotation">bool</span> <span class="parameter-name">linebreak</span></span>])
327+
<span class="name"><a href="ex/Apple/printMsg.html">printMsg</a></span><span class="signature">(<wbr><span class="parameter" id="printMsg-param-msg"><span class="type-annotation">String</span> <span class="parameter-name">msg</span>, [</span> <span class="parameter" id="printMsg-param-linebreak"><span class="type-annotation">bool</span> <span class="parameter-name">linebreak</span></span> ])
328328
<span class="returntype parameter">&#8594; void</span>
329329
</span>
330330
</dt>

testing/test_package_docs/ex/Apple/isGreaterThan.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ <h5><a href="ex/Apple-class.html">Apple</a></h5>
111111
<div class="col-xs-12 col-sm-9 col-md-8 main-content">
112112
<section class="multi-line-signature">
113113
<span class="returntype">bool</span>
114-
<span class="name ">isGreaterThan</span>(<wbr><span class="parameter" id="isGreaterThan-param-number"><span class="type-annotation">int</span> <span class="parameter-name">number</span></span>, {<span class="parameter" id="isGreaterThan-param-check"><span class="type-annotation">int</span> <span class="parameter-name">check</span>: <span class="default-value">5</span></span>})
114+
<span class="name ">isGreaterThan</span>(<wbr><span class="parameter" id="isGreaterThan-param-number"><span class="type-annotation">int</span> <span class="parameter-name">number</span>, {</span> <span class="parameter" id="isGreaterThan-param-check"><span class="type-annotation">int</span> <span class="parameter-name">check</span>: <span class="default-value">5</span></span> })
115115
</section>
116116

117117

testing/test_package_docs/ex/Apple/printMsg.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ <h5><a href="ex/Apple-class.html">Apple</a></h5>
111111
<div class="col-xs-12 col-sm-9 col-md-8 main-content">
112112
<section class="multi-line-signature">
113113
<span class="returntype">void</span>
114-
<span class="name ">printMsg</span>(<wbr><span class="parameter" id="printMsg-param-msg"><span class="type-annotation">String</span> <span class="parameter-name">msg</span></span>, [<span class="parameter" id="printMsg-param-linebreak"><span class="type-annotation">bool</span> <span class="parameter-name">linebreak</span></span>])
114+
<span class="name ">printMsg</span>(<wbr><span class="parameter" id="printMsg-param-msg"><span class="type-annotation">String</span> <span class="parameter-name">msg</span>, [</span> <span class="parameter" id="printMsg-param-linebreak"><span class="type-annotation">bool</span> <span class="parameter-name">linebreak</span></span> ])
115115
</section>
116116

117117

testing/test_package_docs/ex/B-class.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ <h2>Methods</h2>
297297
<p></p>
298298
</dd>
299299
<dt id="isGreaterThan" class="callable inherited">
300-
<span class="name"><a href="ex/Apple/isGreaterThan.html">isGreaterThan</a></span><span class="signature">(<wbr><span class="parameter" id="isGreaterThan-param-number"><span class="type-annotation">int</span> <span class="parameter-name">number</span></span>, {<span class="parameter" id="isGreaterThan-param-check"><span class="type-annotation">int</span> <span class="parameter-name">check</span>: <span class="default-value">5</span></span>})
300+
<span class="name"><a href="ex/Apple/isGreaterThan.html">isGreaterThan</a></span><span class="signature">(<wbr><span class="parameter" id="isGreaterThan-param-number"><span class="type-annotation">int</span> <span class="parameter-name">number</span>, {</span> <span class="parameter" id="isGreaterThan-param-check"><span class="type-annotation">int</span> <span class="parameter-name">check</span>: <span class="default-value">5</span></span> })
301301
<span class="returntype parameter">&#8594; bool</span>
302302
</span>
303303
</dt>
@@ -341,7 +341,7 @@ <h2>Methods</h2>
341341
<div class="features">inherited</div>
342342
</dd>
343343
<dt id="printMsg" class="callable inherited">
344-
<span class="name"><a href="ex/Apple/printMsg.html">printMsg</a></span><span class="signature">(<wbr><span class="parameter" id="printMsg-param-msg"><span class="type-annotation">String</span> <span class="parameter-name">msg</span></span>, [<span class="parameter" id="printMsg-param-linebreak"><span class="type-annotation">bool</span> <span class="parameter-name">linebreak</span></span>])
344+
<span class="name"><a href="ex/Apple/printMsg.html">printMsg</a></span><span class="signature">(<wbr><span class="parameter" id="printMsg-param-msg"><span class="type-annotation">String</span> <span class="parameter-name">msg</span>, [</span> <span class="parameter" id="printMsg-param-linebreak"><span class="type-annotation">bool</span> <span class="parameter-name">linebreak</span></span> ])
345345
<span class="returntype parameter">&#8594; void</span>
346346
</span>
347347
</dt>
@@ -359,7 +359,7 @@ <h2>Methods</h2>
359359
<div class="features">inherited</div>
360360
</dd>
361361
<dt id="writeMsg" class="callable">
362-
<span class="name"><a href="ex/B/writeMsg.html">writeMsg</a></span><span class="signature">(<wbr><span class="parameter" id="writeMsg-param-msg"><span class="type-annotation">String</span> <span class="parameter-name">msg</span></span>, [<span class="parameter" id="writeMsg-param-transformMsg"><span class="type-annotation">String</span> <span class="parameter-name">transformMsg</span>(<span class="parameter" id="transformMsg-param-origMsg"><span class="type-annotation">String</span> <span class="parameter-name">origMsg</span></span>, <span class="parameter" id="transformMsg-param-flag"><span class="type-annotation">bool</span> <span class="parameter-name">flag</span></span>)</span>])
362+
<span class="name"><a href="ex/B/writeMsg.html">writeMsg</a></span><span class="signature">(<wbr><span class="parameter" id="writeMsg-param-msg"><span class="type-annotation">String</span> <span class="parameter-name">msg</span>, [</span> <span class="parameter" id="writeMsg-param-transformMsg"><span class="type-annotation">String</span> <span class="parameter-name">transformMsg</span>(<span class="parameter" id="transformMsg-param-origMsg"><span class="type-annotation">String</span> <span class="parameter-name">origMsg</span>, </span> <span class="parameter" id="transformMsg-param-flag"><span class="type-annotation">bool</span> <span class="parameter-name">flag</span></span>)</span> ])
363363
<span class="returntype parameter">&#8594; void</span>
364364
</span>
365365
</dt>

0 commit comments

Comments
 (0)