wishthis/node_modules/fork-stream/README.md
2022-01-21 09:28:41 +01:00

135 lines
2.1 KiB
Markdown

fork-stream [![build status](https://travis-ci.org/deoxxa/fork-stream.png)](https://travis-ci.org/deoxxa/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:
```javascript
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](http://npmjs.org/):
> $ 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.
```javascript
new ForkStream(options);
```
```javascript
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](https://github.com/deoxxa/fork-stream/blob/master/example.js).
```javascript
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](http://github.com/deoxxa))
* Twitter ([@deoxxa](http://twitter.com/deoxxa))
* Email ([deoxxa@fknsrs.biz](mailto:deoxxa@fknsrs.biz))