76 lines
1.9 KiB
JavaScript
76 lines
1.9 KiB
JavaScript
// Generated by CoffeeScript 1.12.5
|
|
'use strict';
|
|
var DEBUG, baseStream, through;
|
|
|
|
baseStream = require('stream');
|
|
|
|
through = require('through2');
|
|
|
|
DEBUG = process.env.NODE_ENV === 'development';
|
|
|
|
|
|
/*
|
|
* Taps into the pipeline and allows user to easily route data through
|
|
* another stream or change content.
|
|
*/
|
|
|
|
module.exports = function(lambda) {
|
|
var modifyFile, utils;
|
|
utils = function(tapStream, file) {
|
|
return {
|
|
|
|
/*
|
|
* Routes through another stream. The filter must not be
|
|
* created. This will create the filter as needed.
|
|
*
|
|
* @param filter {stream}
|
|
* @param args {Array} Array containg arguments to apply to filter.
|
|
*
|
|
* @example
|
|
* t.through coffee, [{bare: true}]
|
|
*/
|
|
through: function(filter, args) {
|
|
var stream;
|
|
if (DEBUG) {
|
|
if (!Array.isArray(args)) {
|
|
throw new TypeError("Args must be an array to `apply` to the filter");
|
|
}
|
|
}
|
|
stream = filter.apply(null, args);
|
|
stream.on("error", function(err) {
|
|
return tapStream.emit("error", err);
|
|
});
|
|
stream.write(file);
|
|
return stream;
|
|
}
|
|
};
|
|
};
|
|
modifyFile = function(file, enc, cb) {
|
|
var data, inst, next, obj;
|
|
inst = {
|
|
file: file
|
|
};
|
|
obj = lambda(inst.file, utils(this, inst.file), inst);
|
|
next = (function(_this) {
|
|
return function() {
|
|
_this.push(file);
|
|
return cb();
|
|
};
|
|
})(this);
|
|
if (obj instanceof baseStream && !obj._readableState.ended) {
|
|
obj.on('end', next);
|
|
return obj.on('data', data = function() {
|
|
obj.removeListener('end', next);
|
|
obj.removeListener('data', data);
|
|
return next();
|
|
});
|
|
} else {
|
|
return next();
|
|
}
|
|
};
|
|
return through.obj(modifyFile, function(cb) {
|
|
return cb();
|
|
});
|
|
};
|
|
|
|
//# sourceMappingURL=tap.js.map
|