123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- var util = require('util');
- var _ = require('lodash');
- var app = {};
- /**
- * Worker
- *
- * Attaches defined data to parameter which inherit the data.
- * It uses 2 functions, preProcess and postProcess (with the result of preProcess).
- *
- * preProcess Generates a list with [defineName][name][version] = value
- * postProcess Attach the preProcess data with the nearest version to the tree.
- *
- * @param {Object} _app
- */
- function Worker(_app) {
- var self = this;
- // global variables
- app = _app;
- // class variables
- this.workers = {};
- // load worker
- var workers = Object.keys(app.workers);
- workers.forEach(function(worker) {
- if (_.isObject( app.workers[worker] )) {
- app.log.debug('inject worker: ' + worker);
- self.addWorker(worker, app.workers[worker] );
- } else {
- var filename = app.workers[worker];
- app.log.debug('load worker: ' + worker + ', ' + filename);
- self.addWorker(worker, require(filename));
- }
- });
- }
- /**
- * Inherit
- */
- util.inherits(Worker, Object);
- /**
- * Exports
- */
- module.exports = Worker;
- /**
- * Add Worker
- */
- Worker.prototype.addWorker = function(name, worker) {
- this.workers[name] = worker;
- };
- /**
- * Execute worker
- *
- * @todo Add priority system (if needed), if a plugin need an other operation to be done before.
- */
- Worker.prototype.process = function(parsedFiles, parsedFilenames, packageInfos) {
- // some smaller operation that are not outsourced to extra workers
- // TODO: add priority system first and outsource them then
- parsedFiles.forEach(function(parsedFile, fileIndex) {
- parsedFile.forEach(function(block) {
- if (Object.keys(block.global).length === 0 && Object.keys(block.local).length > 0) {
- if ( ! block.local.type)
- block.local.type = '';
- if ( ! block.local.url)
- block.local.url = '';
- if ( ! block.local.version)
- block.local.version = packageInfos.defaultVersion;
- if ( ! block.local.filename)
- block.local.filename = parsedFilenames[fileIndex];
- // convert dir delimeter \\ to /
- block.local.filename = block.local.filename.replace(/\\/g, '/');
- }
- });
- });
- // process transformations and assignments for each @api-Parameter
- var preProcessResults = {};
- _.each(this.workers, function(worker, name) {
- if (worker.preProcess) {
- app.log.verbose('worker preProcess: ' + name);
- var result = worker.preProcess(parsedFiles, parsedFilenames, packageInfos);
- _.extend(preProcessResults, result);
- }
- });
- _.each(this.workers, function(worker, name) {
- if (worker.postProcess) {
- app.log.verbose('worker postProcess: ' + name);
- worker.postProcess(parsedFiles, parsedFilenames, preProcessResults, packageInfos);
- }
- });
- };
|