Skip to content

Commit 9f8a9c6

Browse files
chore(doc-gen): ensure all public exports are rendered in public_docs
Closes angular#1222
1 parent ad083ed commit 9f8a9c6

File tree

5 files changed

+40
-27
lines changed

5 files changed

+40
-27
lines changed

docs/app/css/app.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,6 @@ md-content.demo-source-container > hljs > pre > code.highlight {
374374
margin: 1em 0;
375375
}
376376

377-
.member {
378-
377+
.left-nav {
378+
min-width: 300px;
379379
}

docs/app/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ <h1 class="md-toolbar-tools">Angular V2</h1>
2828

2929
<section layout="row">
3030

31-
<md-content>
31+
<md-content class="left-nav">
3232
<h2>Navigation</h2>
3333
<section ng-repeat="area in nav.areas">
3434
<h3>{{ area.name }}</h3>

docs/dgeni-package/templates/class.template.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
{% block body %}
55
<h1 class="class export">{$ doc.name $} <span class="type">class</span></h1>
6-
<p class="module">exported from <a href="/{$ doc.moduleDoc.path $}">{$ doc.moduleDoc.id $}</a></p>
6+
<p class="module">exported from <a href="/{$ doc.moduleDoc.path $}">{$ doc.moduleDoc.id $}</a><br/>
7+
defined in <a href="https://github.com/angular/angular/tree/master/modules/{$ doc.location.start.source.name $}.js#L{$ doc.location.start.line $}">{$ doc.location.start.source.name $}.js (line {$ doc.location.start.line $})</a></p>
78
<p>{$ doc.description | marked $}</p>
89

910
{%- if doc.constructorDoc or doc.members.length -%}

docs/dgeni-package/templates/module.template.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ <h1 class="id">{$ doc.id $} <span class="type">module</span></h1>
99
<h2>Exports</h2>
1010
<ul>
1111
{%- for exportDoc in doc.exports %}
12-
<li><a href="/{$ exportDoc.path $}">{$ exportDoc.name $} {$ exportDoc.docType $}</a></li>
12+
<li><a href="/{$ exportDoc.path $}"><strong>{$ exportDoc.name $}</strong> {$ exportDoc.docType $}</a></li>
1313
{%- endfor %}
1414
</ul>
1515
{% endif %}

docs/public-docs-package/processors/filterPublicDocs.js

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,42 +10,54 @@ module.exports = function filterPublicDocs(modules) {
1010
},
1111
$process: function(docs) {
1212

13+
var extraPublicDocs = [];
1314
docTypes = this.docTypes;
1415

16+
_.forEach(docs, function(doc) {
1517

16-
docs = _.filter(docs, function(doc) {
18+
if (docTypes.indexOf(doc.docType) === -1 || !doc.publicModule) return;
19+
20+
var publicModule = modules[doc.publicModule];
1721

18-
if (docTypes.indexOf(doc.docType) === -1) return true;
19-
if (!doc.publicModule) return false;
22+
if (!publicModule) {
23+
throw new Error('Missing module definition: "' + doc.publicModule + '"\n' +
24+
'Referenced in class: "' + doc.moduleDoc.id + '/' + doc.name + '"');
25+
} else {
2026

21-
updateModule(doc);
27+
// Ensure module is marked as public
28+
publicModule.isPublic = true;
2229

23-
return true;
30+
// Add a clone of export to its "public" module
31+
var publicDoc = _.clone(doc);
32+
publicDoc.moduleDoc = publicModule;
33+
publicModule.exports.push(publicDoc);
34+
extraPublicDocs.push(publicDoc);
35+
}
2436
});
2537

38+
// Filter out the documents that are not public
2639
docs = _.filter(docs, function(doc) {
27-
return doc.docType !== 'module' || doc.isPublic;
28-
});
29-
return docs;
30-
}
31-
};
3240

41+
if (doc.docType === 'module') {
42+
// doc is a module - is it public?
43+
return doc.isPublic;
44+
}
3345

34-
function updateModule(classDoc) {
46+
if (docTypes.indexOf(doc.docType) === -1) {
47+
// doc is not a type we care about
48+
return true;
49+
}
3550

36-
var originalModule = classDoc.moduleDoc;
37-
var publicModule = modules[classDoc.publicModule];
51+
// doc is in a public module
52+
return doc.moduleDoc && doc.moduleDoc.isPublic;
3853

39-
if (!publicModule) {
40-
throw new Error('Missing module definition: "' + classDoc.publicModule + '"\n' +
41-
'Referenced in class: "' + classDoc.moduleDoc.id + '/' + classDoc.name + '"');
42-
}
54+
});
55+
56+
docs = docs.concat(extraPublicDocs);
4357

44-
publicModule.isPublic = true;
58+
return docs;
59+
}
60+
};
4561

46-
_.remove(classDoc.moduleDoc.exports, function(doc) { return doc === classDoc; });
47-
classDoc.moduleDoc = publicModule;
48-
publicModule.exports.push(classDoc);
4962

50-
}
5163
};

0 commit comments

Comments
 (0)