Skip to content
This repository was archived by the owner on Dec 4, 2017. It is now read-only.

Commit 13878ef

Browse files
petebacondarwinIgorMinar
authored andcommitted
api-builder: show metadata details on decorator docs
1 parent a2089c5 commit 13878ef

File tree

2 files changed

+37
-5
lines changed

2 files changed

+37
-5
lines changed

tools/api-builder/angular.io-package/templates/decorator.template.html

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,36 @@
1515

1616
div(layout="row" layout-xs="column" class="row-margin ng-cloak")
1717
div(flex="20" flex-xs="100")
18-
h2(class="h2-api-docs") Variable Export
18+
h2(class="h2-api-docs") Description
1919
div(class="code-links" flex="80" flex-xs="100")
20-
pre.prettyprint.no-bg
21-
code.
22-
export {$ doc.name $}(options : {@link {$ doc.decoratorType $} {$ doc.decoratorType | escape $}}){$ params.returnType(doc.returnType) $}
2320
:marked
2421
{%- if not doc.notYetDocumented %}
2522
{$ doc.description | indentForMarkdown(6) | trimBlankLines $}
2623
{% endif %}
2724

25+
{% if doc.metadataDoc and doc.metadataDoc.members.length %}
26+
div(layout="row" layout-xs="column" class="metadata" class="row-margin ng-cloak")
27+
div(flex="20" flex-xs="100")
28+
h2(class="h2-api-docs") Metadata Properties
29+
div(class="code-links" flex="80" flex-xs="100")
30+
{% for metadata in doc.metadataDoc.members %}{% if not metadata.internal %}
31+
a(name="{$ metadata.name $}-anchor" class="anchor-offset")
32+
pre(class="prettyprint no-bg" ng-class="{ 'anchor-focused': appCtrl.isApiDocMemberFocused('{$ metadata.name $}') }")
33+
code(class="api-doc-code").
34+
{$ metadata.name $}{$ params.paramList(metadata.parameters) | indent(8, false) | trim $}{$ params.returnType(metadata.returnType) $}
35+
36+
:marked
37+
{%- if not metadata.notYetDocumented %}
38+
{$ metadata.description | indentForMarkdown(6) | replace('### Example', '') | replace('## Example', '') | replace('# Example', '') | trimBlankLines $}
39+
{% endif -%}
40+
41+
{% if not loop.last %}
42+
.hr(class="hr-margin")
43+
{% endif %}
44+
45+
{% endif %}{% endfor %}
46+
{% endif %}
47+
2848
p.location-badge.
2949
exported from {@link {$ doc.moduleDoc.id $} {$doc.moduleDoc.id $} } defined in {$ github.githubViewLink(doc) $}
3050

tools/api-builder/docs-package/processors/mergeDecoratorDocs.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module.exports = function mergeDecoratorDocs() {
66
$runBefore: ['docs-processed'],
77
docsToMergeInfo: [
88
{ nameTemplate: _.template('${name}Decorator'), decoratorProperty: 'decoratorInterfaceDoc' },
9-
{ nameTemplate: _.template('${name}Metadata'), decoratorProperty: 'metadataDoc' },
9+
{ nameTemplate: _.template('${name}Metadata'), decoratorProperty: 'metadataDoc', useFields: ['howToUse', 'whatItDoes'] },
1010
{ nameTemplate: _.template('${name}MetadataType'), decoratorProperty: 'metadataInterfaceDoc' },
1111
{ nameTemplate: _.template('${name}MetadataFactory'), decoratorProperty: 'metadataFactoryDoc' }
1212
],
@@ -21,7 +21,10 @@ module.exports = function mergeDecoratorDocs() {
2121
var makeDecorator = getMakeDecoratorCall(doc);
2222
if (makeDecorator) {
2323
doc.docType = 'decorator';
24+
// get the type of the decorator metadata
2425
doc.decoratorType = makeDecorator.arguments[0].text;
26+
// clear the symbol type named (e.g. ComponentMetadataFactory) since it is not needed
27+
doc.symbolTypeName = undefined;
2528

2629
// keep track of the docs that need to be merged into this decorator doc
2730
docsToMergeInfo.forEach(function(info) {
@@ -35,13 +38,22 @@ module.exports = function mergeDecoratorDocs() {
3538
if (docsToMerge[doc.name]) {
3639
var decoratorDoc = docsToMerge[doc.name].decoratorDoc;
3740
var property = docsToMerge[doc.name].property;
41+
var useFields = docsToMerge[doc.name].useFields;
3842

3943
// attach this document to its decorator
4044
decoratorDoc[property] = doc;
4145

46+
// Copy over fields from the merged doc if specified
47+
if (useFields) {
48+
useFields.forEach(function(field) {
49+
decoratorDoc[field] = doc[field];
50+
});
51+
}
52+
4253
// remove doc from its module doc's exports
4354
doc.moduleDoc.exports = doc.moduleDoc.exports.filter(function(exportDoc) { return exportDoc !== doc; });
4455

56+
4557
// remove from the overall list of docs to be rendered
4658
return false;
4759
}

0 commit comments

Comments
 (0)