From 1a0c6d89b1f05196f22b1bce12b9d6a459fbd9b5 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Sun, 19 Mar 2017 10:37:53 +0000 Subject: [PATCH] build(aio): do not render ignored docs --- aio/transforms/angular.io-package/index.js | 8 +++- .../processors/filterIgnoredDocs.js | 13 +++++++ .../processors/filterIgnoredDocs.spec.js | 39 +++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 aio/transforms/angular.io-package/processors/filterIgnoredDocs.js create mode 100644 aio/transforms/angular.io-package/processors/filterIgnoredDocs.spec.js diff --git a/aio/transforms/angular.io-package/index.js b/aio/transforms/angular.io-package/index.js index 3322e17390..c6e3f928c4 100644 --- a/aio/transforms/angular.io-package/index.js +++ b/aio/transforms/angular.io-package/index.js @@ -48,6 +48,7 @@ module.exports = .processor(require('./processors/convertToJson')) .processor(require('./processors/markBarredODocsAsPrivate')) .processor(require('./processors/filterPrivateDocs')) + .processor(require('./processors/filterIgnoredDocs')) // overrides base packageInfo and returns the one for the 'angular/angular' repo. .factory('packageInfo', function() { return require(path.resolve(PROJECT_ROOT, 'package.json')); }) @@ -123,7 +124,12 @@ module.exports = generateKeywordsProcessor.docTypesToIgnore = ['example-region']; }) - + // Ignore certain problematic files + .config(function(filterIgnoredDocs) { + filterIgnoredDocs.ignore = [ + /\/VERSION$/ // Ignore the `VERSION` const, since it would be written to the same file as the `Version` class + ]; + }) // Where do we write the output files? .config(function(writeFilesProcessor) { writeFilesProcessor.outputFolder = OUTPUT_PATH; }) diff --git a/aio/transforms/angular.io-package/processors/filterIgnoredDocs.js b/aio/transforms/angular.io-package/processors/filterIgnoredDocs.js new file mode 100644 index 0000000000..f0425face5 --- /dev/null +++ b/aio/transforms/angular.io-package/processors/filterIgnoredDocs.js @@ -0,0 +1,13 @@ +/** + * Filter out docs whose id matches a pattern in the `filterIgnoredDocs.ignore` list + */ +module.exports = function filterIgnoredDocs() { + return { + ignore: [], + $runAfter: ['ids-computed'], + $runBefore: ['computing-paths'], + $process: function(docs) { + return docs.filter(doc => !this.ignore.some(regexp => regexp.test(doc.id))); + } + } +}; diff --git a/aio/transforms/angular.io-package/processors/filterIgnoredDocs.spec.js b/aio/transforms/angular.io-package/processors/filterIgnoredDocs.spec.js new file mode 100644 index 0000000000..9ace771bd2 --- /dev/null +++ b/aio/transforms/angular.io-package/processors/filterIgnoredDocs.spec.js @@ -0,0 +1,39 @@ +const testPackage = require('../../helpers/test-package'); +const processorFactory = require('./filterIgnoredDocs'); +const Dgeni = require('dgeni'); + +describe('filterIgnoredDocs processor', () => { + + it('should be available on the injector', () => { + const dgeni = new Dgeni([testPackage('angular.io-package')]); + const injector = dgeni.configureInjector(); + const processor = injector.get('filterIgnoredDocs'); + expect(processor.$process).toBeDefined(); + }); + + it('should run before computing-paths', () => { + const processor = processorFactory(); + expect(processor.$runBefore).toEqual(['computing-paths']) + }); + + it('should run before computing-paths', () => { + const processor = processorFactory(); + expect(processor.$runAfter).toEqual(['ids-computed']); + }); + + it('should remove docs that match the ignore list', () => { + const processor = processorFactory(); + processor.ignore = [/\/VERSION$/, /ignore-me/]; + const docs = [ + { id: 'public1'}, + { id: 'ignore-me/something' }, + { id: 'public2'}, + { id: 'and-me/VERSION' } + ]; + const filteredDocs = processor.$process(docs); + expect(filteredDocs).toEqual([ + { id: 'public1'}, + { id: 'public2'} + ]); + }) +}); \ No newline at end of file