Skip to content

Commit a588d48

Browse files
petebacondarwinnaomiblack
authored andcommitted
chore(doc-gen): filter unwanted decorators from angular.io docs
Closes angular#3705
1 parent dad4075 commit a588d48

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

docs/angular.io-package/index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module.exports = new Package('angular.io', [basePackage])
99

1010
.factory(require('./services/renderMarkdown'))
1111
.processor(require('./processors/addJadeDataDocsProcessor'))
12+
.processor(require('./processors/filterUnwantedDecorators'))
1213

1314
// Configure rendering
1415
.config(function(templateFinder, templateEngine) {
@@ -29,6 +30,14 @@ module.exports = new Package('angular.io', [basePackage])
2930
})
3031

3132

33+
.config(function(filterUnwantedDecorators, log) {
34+
log.level = 'info';
35+
filterUnwantedDecorators.decoratorsToIgnore = [
36+
'CONST',
37+
'IMPLEMENTS',
38+
'ABSTRACT'
39+
];
40+
})
3241

3342

3443
.config(function(computeIdsProcessor, computePathsProcessor, EXPORT_DOC_TYPES) {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var _ = require('lodash');
2+
3+
module.exports = function filterUnwantedDecorators() {
4+
return {
5+
decoratorsToIgnore: [],
6+
$runAfter: ['processing-docs'],
7+
$runBefore: ['docs-processed'],
8+
$process: function(docs) {
9+
var decoratorsToIgnore = this.decoratorsToIgnore || [];
10+
_.forEach(docs, function(doc) {
11+
if (doc.decorators) {
12+
doc.decorators = _.filter(doc.decorators, function(decorator) {
13+
return decoratorsToIgnore.indexOf(decorator.name) === -1;
14+
});
15+
}
16+
});
17+
return docs;
18+
}
19+
};
20+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
var mockPackage = require('../mocks/mockPackage');
2+
var Dgeni = require('dgeni');
3+
4+
describe('filterUnwantedDecorators', function() {
5+
var dgeni, injector, processor;
6+
7+
beforeEach(function() {
8+
dgeni = new Dgeni([mockPackage()]);
9+
injector = dgeni.configureInjector();
10+
processor = injector.get('filterUnwantedDecorators');
11+
});
12+
13+
14+
it('should remove decorators specified by name', function() {
15+
var docs = [
16+
{ id: 'doc1', decorators: [ { name: 'A' }, { name: 'B' } ] },
17+
{ id: 'doc2', decorators: [ { name: 'B' }, { name: 'C' } ] },
18+
{ id: 'doc3', decorators: [ { name: 'A' }, { name: 'C' } ] }
19+
];
20+
processor.decoratorsToIgnore = ['D', 'B'];
21+
docs = processor.$process(docs);
22+
23+
expect(docs).toEqual([
24+
{ id: 'doc1', decorators: [ { name: 'A' } ] },
25+
{ id: 'doc2', decorators: [ { name: 'C' } ] },
26+
{ id: 'doc3', decorators: [ { name: 'A' }, { name: 'C' } ] }
27+
]);
28+
});
29+
30+
31+
it('should ignore docs that have no decorators', function() {
32+
var docs = [
33+
{ id: 'doc1', decorators: [ { name: 'A' }, { name: 'B' } ] },
34+
{ id: 'doc2' },
35+
{ id: 'doc3', decorators: [ { name: 'A' }, { name: 'C' } ] }
36+
];
37+
processor.decoratorsToIgnore = ['D', 'B'];
38+
docs = processor.$process(docs);
39+
40+
expect(docs).toEqual([
41+
{ id: 'doc1', decorators: [ { name: 'A' } ] },
42+
{ id: 'doc2' },
43+
{ id: 'doc3', decorators: [ { name: 'A' }, { name: 'C' } ] }
44+
]);
45+
});
46+
});

0 commit comments

Comments
 (0)