fork-stream
Fork a stream in multiple directions according to a function.
Overview
fork-stream basically gives you conditional branching for streams. You supply the logic, fork-stream supplies the streaming.
Super Quickstart
Code:
var ForkStream = require("fork-stream");
var fork = new ForkStream({
classifier: function classify(e, done) {
return done(null, e.match(/[aeiou]/));
},
});
fork.a.on("data", console.log.bind(console, "vowels:"));
fork.b.on("data", console.log.bind(console, "no vowels:"));
fork.write("hello");
fork.write("zxcbzz");
fork.write("ooooooo");
fork.end();
Output:
vowels: hello
no vowels: zxcbzz
vowels: ooooooo
Installation
Available via npm:
$ npm install fork-stream
Or via git:
$ git clone git://github.com/deoxxa/fork-stream.git node_modules/fork-stream
API
constructor
Creates a new fork-stream.
new ForkStream(options);
var fork = new ForkStream({
highWaterMark: 5,
classifier: function(e, done) {
return done(null, !!e);
},
});
- options - regular stream options, and a
classifier
property that fork-stream will use to decide what output stream to send your object down.
Example
Also see example.js.
var ForkStream = require("fork-stream");
var fork = new ForkStream({
classifier: function classify(e, done) {
return done(null, e >= 5);
},
});
fork.a.on("data", console.log.bind(null, "a"));
fork.b.on("data", console.log.bind(null, "b"));
for (var i=0;i<20;++i) {
fork.write(Math.round(Math.random() * 10));
}
Output:
b 1
a 6
a 9
a 10
a 7
a 5
b 2
b 4
a 8
b 3
a 5
b 4
a 7
a 8
b 1
a 6
b 2
b 0
a 5
b 1
License
3-clause BSD. A copy is included with the source.
Contact
- GitHub (deoxxa)
- Twitter (@deoxxa)
- Email ([email protected])