Skip to content

Commit ef3cc8e

Browse files
chore(doc-gen): render optional members correctly
Partially Closes angular#2849
1 parent 561b78a commit ef3cc8e

File tree

6 files changed

+29
-2
lines changed

6 files changed

+29
-2
lines changed

docs/angular.io-package/templates/class.template.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
{%- for member in doc.members %}{% if not member.private %}
3333
.l-sub-section
34-
h3 {$ member.name $}
34+
h3 {$ member.name $}{% if member.optional %}?{% endif %}
3535

3636
{% if member.parameters %}
3737
pre.prettyprint
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface MyInterface {
2+
optionalProperty? : string,
3+
(param: string) : string
4+
}

docs/dgeni-package/processors/readTypeScriptModules.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,10 @@ module.exports = function readTypeScriptModules(tsParser, readFilesProcessor, mo
212212
memberDoc.returnType = getReturnType(typeChecker, memberSymbol);
213213
}
214214

215+
if(memberSymbol.flags & ts.SymbolFlags.Optional) {
216+
memberDoc.optional = true;
217+
}
218+
215219
return memberDoc;
216220
}
217221

docs/dgeni-package/processors/readTypeScriptModules.spec.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,22 @@ describe('readTypeScriptModules', function() {
4545
});
4646

4747

48+
describe('interfaces', function() {
49+
50+
it('should mark optional properties', function() {
51+
processor.sourceFiles = [ 'interfaces.ts'];
52+
var docs = [];
53+
processor.$process(docs);
54+
55+
var moduleDoc = docs[0];
56+
var exportedInterface = moduleDoc.exports[0];
57+
var member = exportedInterface.members[0];
58+
expect(member.name).toEqual('optionalProperty');
59+
expect(member.optional).toEqual(true);
60+
});
61+
});
62+
63+
4864
describe('ordering of members', function() {
4965
it('should order class members in order of appearance (by default)', function() {
5066
processor.sourceFiles = ['orderingOfMembers.ts'];

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ <h1 id="constructor" class="name">{$ doc.constructorDoc.name $}{$ paramList(doc.
2323

2424
{%- for member in doc.members %}{% if not member.private %}
2525
<section class="member">
26-
<h1 id="{$ member.name $}" class="name">{$ member.name $}{$ paramList(member.params) $}</h1>
26+
<h1 id="{$ member.name $}" class="name">
27+
{$ member.name $}{% if member.optional %}?{% endif %}{$ paramList(member.params) $}
28+
</h1>
2729
{% marked %}
2830
{$ member.description $}
2931
{% endmarked %}

docs/dgeni-package/templates/type-definition.template.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
{%- for member in export.members -%}
3030
{$ commentBlock(member, 5) $}
3131
{$ member.name $}
32+
{%- if member.optional %}?{% endif -%}
3233
{%- if member.parameters %}({% for param in member.parameters %}{$ param $}{% if not loop.last %}, {% endif %}{% endfor %}){%- endif %}
3334
{%- if member.returnType %}: {$ member.returnType $}{%- else -%}: any{% endif -%}
3435
;

0 commit comments

Comments
 (0)