fork-stream

Fork a stream in multiple directions according to a function

npm install fork-stream
8 downloads in the last week
16 downloads in the last month

fork-stream build status

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

npm loves you