UNPKG

1.55 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 var filename = app.filters[filter];
25 app.log.debug('load filter: ' + filter + ', ' + filename);
26 self.addFilter(filter, require(filename));
27 });
28}
29
30/**
31 * Inherit
32 */
33util.inherits(Filter, Object);
34
35/**
36 * Exports
37 */
38module.exports = Filter;
39
40/**
41 * Add Filter
42 */
43Filter.prototype.addFilter = function(name, filter) {
44 this.filters[name] = filter;
45};
46
47/**
48 * Execute filter
49 */
50Filter.prototype.process = function(parsedFiles, parsedFilenames) {
51 // filter each @api-Parameter
52 _.each(this.filters, function(filter, name) {
53 if (filter.postFilter) {
54 app.log.verbose('filter postFilter: ' + name);
55 filter.postFilter(parsedFiles, parsedFilenames);
56 }
57 });
58
59 // reduce to local blocks where global is empty
60 var blocks = [];
61 parsedFiles.forEach(function(parsedFile) {
62 parsedFile.forEach(function(block) {
63 if (Object.keys(block.global).length === 0 && Object.keys(block.local).length > 0)
64 blocks.push(block.local);
65 });
66 });
67 return blocks;
68};