Skip to content

Commit 609201e

Browse files
chore(doc-gen): add method signatures to members and functions
Closes angular/dgeni#124
1 parent 54a4e4a commit 609201e

File tree

5 files changed

+55
-9
lines changed

5 files changed

+55
-9
lines changed

docs/dgeni-package/processors/processClassDocs.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,20 @@ module.exports = function processClassDocs(log, getJSDocComment) {
1717
// Create a new doc for each member of the class
1818
_.forEach(classDoc.elements, function(memberDoc) {
1919

20-
if (ignorePrivateMembers && memberDoc.name.literalToken.value.charAt(0) === '_') return;
20+
var memberName = memberDoc.name.location.toString();
21+
22+
if (ignorePrivateMembers && memberName.charAt(0) === '_') return;
2123

22-
classDoc.members.push(memberDoc);
2324
memberDocs.push(memberDoc);
2425

2526
memberDoc.docType = 'member';
2627
memberDoc.classDoc = classDoc;
27-
memberDoc.name = memberDoc.name.literalToken.value;
28-
28+
memberDoc.name = memberName;
29+
if (memberDoc.parameterList) {
30+
memberDoc.params = memberDoc.parameterList.parameters.map(function(param) {
31+
return param.location.toString();
32+
});
33+
}
2934

3035
if (memberDoc.commentBefore ) {
3136
// If this export has a comment, remove it from the list of
@@ -37,6 +42,14 @@ module.exports = function processClassDocs(log, getJSDocComment) {
3742

3843
_.assign(memberDoc, getJSDocComment(memberDoc.commentBefore));
3944
}
45+
46+
// Constuctor is a special case member
47+
if (memberName === 'constructor') {
48+
classDoc.constructorDoc = memberDoc;
49+
} else {
50+
insertSorted(classDoc.members, memberDoc, 'name');
51+
}
52+
4053
});
4154
}
4255
});
@@ -45,3 +58,13 @@ module.exports = function processClassDocs(log, getJSDocComment) {
4558
}
4659
};
4760
};
61+
62+
63+
function insertSorted(collection, item, property) {
64+
var index = collection.length;
65+
while(index>0) {
66+
if(collection[index-1][property] < item[property]) break;
67+
index -= 1;
68+
}
69+
collection.splice(index, 0, item);
70+
}

docs/dgeni-package/services/ExportTreeVisitor.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ module.exports = function ExportTreeVisitor(ParseTreeVisitor, log) {
3838
this.updateExport(tree);
3939
this.currentExport.name = tree.name.identifierToken.value;
4040
this.currentExport.functionKind = tree.functionKind;
41-
this.currentExport.parameters = tree.parameterList.parameters;
41+
this.currentExport.parameters = tree.parameterList.parameters.map(function(param) {
42+
return param.location.toString();
43+
});
4244
this.currentExport.typeAnnotation = tree.typeAnnotation;
4345
this.currentExport.annotations = tree.annotations;
4446
this.currentExport.docType = 'function';

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
{% extends 'layout/base.template.html' %}
1+
{% include "lib/paramList.html" -%}
2+
{% extends 'layout/base.template.html' -%}
23

34
{% block body %}
4-
<h1>{$ doc.name $} <span class="type">class</span></h1>
5+
<h1 class="class export">{$ doc.name $} <span class="type">class</span></h1>
56
<p class="module">exported from <a href="/{$ doc.moduleDoc.path $}">{$ doc.moduleDoc.id $}</a></p>
67
<p>{$ doc.description | marked $}</p>
78

89
<h2>Members</h2>
9-
{% for member in doc.members %}
10-
<h3>{$ member.name $}</h3>
10+
{%- if doc.constructorDoc %}
11+
<h3>{$ doc.constructorDoc.name $}{$ paramList(doc.constructorDoc.params) $}</h3>
12+
<p>{$ doc.constructorDoc.description | marked $}</p>
13+
{% endif -%}
14+
{%- for member in doc.members %}
15+
<h3>{$ member.name $}{$ paramList(member.params) $}</h3>
1116
<p>{$ member.description | marked $}</p>
1217
{% endfor %}
1318

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{% include "lib/paramList.html" -%}
2+
{% extends 'layout/base.template.html' -%}
3+
4+
{% block body %}
5+
<h1 class="function export">{$ doc.name $}{$ paramList(doc.parameters) $}</h1>
6+
<p class="module">exported from <a href="/{$ doc.moduleDoc.path $}">{$ doc.moduleDoc.id $}</a></p>
7+
<p>{$ doc.description | marked $}</p>
8+
9+
{% endblock %}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{% macro paramList(params) -%}
2+
{%- if params -%}<span class="params">(
3+
{%- for param in params -%}
4+
<span class="param">{$ param $}{% if not loop.last %}, {% endif %}</span>
5+
{%- endfor %})</span>
6+
{%- endif %}
7+
{%- endmacro -%}

0 commit comments

Comments
 (0)