33 lines
924 B
JavaScript
33 lines
924 B
JavaScript
var _ = require('lodash');
|
|
var vm = require('vm');
|
|
|
|
module.exports = function extractDirectiveClassesProcessor() {
|
|
return {
|
|
$runAfter: ['processing-docs'],
|
|
$runBefore: ['docs-processed'],
|
|
decoratorTypes: ['Directive', 'Component', 'View'],
|
|
$process: function(docs) {
|
|
var decoratorTypes = this.decoratorTypes;
|
|
|
|
_.forEach(docs, function(doc) {
|
|
|
|
_.forEach(doc.decorators, function(decorator) {
|
|
|
|
if (decoratorTypes.indexOf(decorator.name) !== -1) {
|
|
|
|
// We use this sneaky vm trick to extract the object literal
|
|
// argument from the decorator's constructor call
|
|
var args = decorator.arguments ?
|
|
vm.runInNewContext('dummy = ' + decorator.arguments[0]) : {};
|
|
|
|
doc[decorator.name.toLowerCase() + 'Options'] = args;
|
|
doc.docType = 'directive';
|
|
}
|
|
});
|
|
});
|
|
|
|
return docs;
|
|
}
|
|
};
|
|
};
|