From f503c1e9e6c69e98ff05b931e38ab58e9946456e Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Tue, 17 Mar 2015 16:49:07 +0000 Subject: [PATCH] chore(doc-gen): add new "public" docs configuration --- docs/public-docs-package/index.js | 16 ++++++ .../processors/filterPublicDocs.js | 49 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 docs/public-docs-package/index.js create mode 100644 docs/public-docs-package/processors/filterPublicDocs.js diff --git a/docs/public-docs-package/index.js b/docs/public-docs-package/index.js new file mode 100644 index 0000000000..e1de117dc2 --- /dev/null +++ b/docs/public-docs-package/index.js @@ -0,0 +1,16 @@ +var Package = require('dgeni').Package; +var basePackage = require('../dgeni-package'); + + +module.exports = new Package('angular-public', [basePackage]) + +.processor(require('./processors/filterPublicDocs')) + +.config(function(parseTagsProcessor) { + parseTagsProcessor.tagDefinitions.push({ name: 'publicModule' }); +}) + +// Configure file writing +.config(function(writeFilesProcessor) { + writeFilesProcessor.outputFolder = 'dist/public_docs'; +}); diff --git a/docs/public-docs-package/processors/filterPublicDocs.js b/docs/public-docs-package/processors/filterPublicDocs.js new file mode 100644 index 0000000000..494229d3c7 --- /dev/null +++ b/docs/public-docs-package/processors/filterPublicDocs.js @@ -0,0 +1,49 @@ +var _ = require('lodash'); + +module.exports = function filterPublicDocs(modules) { + return { + $runAfter: ['tags-parsed'], + $runBefore: ['computing-ids'], + $process: function(docs) { + + //console.log('filterPublicDocs', Object.keys(modules)); + + + docs = _.filter(docs, function(doc) { + if (doc.docType !== 'class') return true; + if (!doc.publicModule) return false; + + //console.log('CLASS:', doc.name, doc.moduleDoc.id); + updateModule(doc); + + return true; + }); + + docs = _.filter(docs, function(doc) { + return doc.docType !== 'module' || doc.isPublic; + }); + return docs; + } + }; + + + function updateModule(classDoc) { + + var originalModule = classDoc.moduleDoc; + var publicModule = modules[classDoc.publicModule]; + + if (!publicModule) { + throw new Error('Missing module definition: "' + classDoc.publicModule + '"\n' + + 'Referenced in class: "' + classDoc.moduleDoc.id + '/' + classDoc.name + '"'); + } + + publicModule.isPublic = true; + + //console.log('UPDATE CLASS', classDoc.id, originalModule.id, publicModule.id); + + _.remove(classDoc.moduleDoc.exports, function(doc) { return doc === classDoc; }); + classDoc.moduleDoc = publicModule; + publicModule.exports.push(classDoc); + + } +}; \ No newline at end of file