46 lines
1 KiB
JavaScript
46 lines
1 KiB
JavaScript
"use strict";
|
|
|
|
module.exports = make
|
|
module.exports.ctor = ctor
|
|
module.exports.objCtor = objCtor
|
|
module.exports.obj = obj
|
|
|
|
var through2 = require("through2")
|
|
var xtend = require("xtend")
|
|
|
|
function ctor(options, fn) {
|
|
if (typeof options == "function") {
|
|
fn = options
|
|
options = {}
|
|
}
|
|
|
|
var Filter = through2.ctor(options, function (chunk, encoding, callback) {
|
|
if (this.options.wantStrings) chunk = chunk.toString()
|
|
if (fn.call(this, chunk, this._index++)) this.push(chunk)
|
|
return callback()
|
|
})
|
|
Filter.prototype._index = 0
|
|
return Filter
|
|
}
|
|
|
|
function objCtor(options, fn) {
|
|
if (typeof options === "function") {
|
|
fn = options
|
|
options = {}
|
|
}
|
|
options = xtend({objectMode: true, highWaterMark: 16}, options)
|
|
return ctor(options, fn)
|
|
}
|
|
|
|
function make(options, fn) {
|
|
return ctor(options, fn)()
|
|
}
|
|
|
|
function obj(options, fn) {
|
|
if (typeof options === "function") {
|
|
fn = options
|
|
options = {}
|
|
}
|
|
options = xtend({objectMode: true, highWaterMark: 16}, options)
|
|
return make(options, fn)
|
|
}
|