UNPKG

1.75 kBJavaScriptView Raw
1var util = require('util');
2var _ = require('lodash');
3
4var app = {};
5
6/**
7 * Filter
8 * Cleanup the data, e.g.: remove double fields, happen when overwrite a global inherited field with a local definition.
9 *
10 * @param {Object} _app
11 */
12function Filter(_app) {
13 var self = this;
14
15 // global variables
16 app = _app;
17
18 // class variables
19 this.filters = {};
20
21 // load filters
22 var filters = Object.keys(app.filters);
23 filters.forEach(function(filter) {
24 if (_.isObject( app.filters[filter] )) {
25 app.log.debug('inject filter: ' + filter);
26 self.addFilter(filter, app.filters[filter] );
27 } else {
28 var filename = app.filters[filter];
29 app.log.debug('load filter: ' + filter + ', ' + filename);
30 self.addFilter(filter, require(filename));
31 }
32 });
33}
34
35/**
36 * Inherit
37 */
38util.inherits(Filter, Object);
39
40/**
41 * Exports
42 */
43module.exports = Filter;
44
45/**
46 * Add Filter
47 */
48Filter.prototype.addFilter = function(name, filter) {
49 this.filters[name] = filter;
50};
51
52/**
53 * Execute filter
54 */
55Filter.prototype.process = function(parsedFiles, parsedFilenames) {
56 // filter each @api-Parameter
57 _.each(this.filters, function(filter, name) {
58 if (filter.postFilter) {
59 app.log.verbose('filter postFilter: ' + name);
60 filter.postFilter(parsedFiles, parsedFilenames);
61 }
62 });
63
64 // reduce to local blocks where global is empty
65 var blocks = [];
66 parsedFiles.forEach(function(parsedFile) {
67 parsedFile.forEach(function(block) {
68 if (Object.keys(block.global).length === 0 && Object.keys(block.local).length > 0)
69 blocks.push(block.local);
70 });
71 });
72 return blocks;
73};