https://github.com/dashed/detour-stream
Use boolean expressions/functions to conditionally attach a stream as a detour or an alternative destination stream.
https://github.com/dashed/detour-stream
Last synced: 10 months ago
JSON representation
Use boolean expressions/functions to conditionally attach a stream as a detour or an alternative destination stream.
- Host: GitHub
- URL: https://github.com/dashed/detour-stream
- Owner: dashed
- License: mit
- Created: 2014-02-18T20:53:38.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2016-07-12T01:48:58.000Z (over 9 years ago)
- Last Synced: 2025-03-28T17:57:27.021Z (10 months ago)
- Language: JavaScript
- Size: 19.5 KB
- Stars: 5
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
detour-stream
=============
Use boolean expressions/functions to conditionally attach a stream as a *detour* or an *alternative* destination stream.
This module is inspired by [gulp-if](https://github.com/robrich/gulp-if). The difference is that this module is not created for [gulp](https://github.com/gulpjs/gulp).

Following the above diagram, if **bool** is *unsatisfied*, then data from **stream A** will pass through to **Stream D**.
Otherwise, data will pipe to **Stream B** whenever **bool** is *satisfied*.
If **branch** is true, then data will **not** be piped back to **Stream D**. This is useful when emulating *if/else* with streams.
Example
=======
`detour-stream` is a function that creates a writable stream: https://nodejs.org/api/stream.html#stream_readable_pipe_destination_options
The writable stream is created via `through2 v0.x.y`: https://github.com/rvagg/through2
```js
var detour = require('detour-stream');
stream = fs
.createReadStream(filepath)
.pipe(detour(someBoolean, decodeStream(someOptions))) // just pipe it
.pipe(writeStream);
```
API
===
## detour(bool, stream [, branch])
`detour` will pipe data to stream appropriately whenever `bool` is satisfied.
### Parameters
#### bool
Type: `boolean`, or `function`
If a function is given, then the function is passed a data chunk. The function should return a `boolean`.
#### stream
Stream for detour-stream to pipe data into whenever **bool** satisfies.
#### branch
Type: `boolean`
Default: `false`
`branch` controls the flow behavior of whether detour-stream should pipe `stream` back to the main stream (i.e. detour stream).
If `true`, then gulp-if **will not** pipe `stream` back to the main stream. This emulates *if/else* stream flow.
License
=======
MIT.