rindle
Collection of utilities for working with Streams.
Description
This is a collection of functions that operate on streams to encapsulate some of the tasks I usually have to do in my project. I'll be adding more as I encounter more patterns.
Installation
Install rindle
by running:
$ npm install --save rindle
Documentation
rindle.wait(stream, callback)
This functions listens for the following events:
-
close
. -
end
. -
done
.
If those events pass any argument when being emitted, you'll be able to access them as arguments to the callback.
Kind: static method of rindle
Summary: Wait for a stream to close
Access: public
Param | Type | Description |
---|---|---|
stream | Stream |
stream |
callback | function |
callback (error, args...) |
Example
var fs = require('fs');
var rindle = require('rindle');
var input = fs.createReadStream('foo/bar');
var output = fs.createWriteStream('foo/baz');
input.pipe(output);
rindle.wait(output, function(error) {
if (error) throw error;
console.log('The output stream was closed!');
});
rindle.extract(stream, callback)
Notice this function only extracts the remaining data from the stream.
Kind: static method of rindle
Summary: Extract data from readable stream
Access: public
Param | Type | Description |
---|---|---|
stream | StreamReadable |
stream |
callback | function |
callback (error, data) |
Example
var fs = require('fs');
var rindle = require('rindle');
var input = fs.createReadStream('foo/bar');
rindle.extract(input, function(error, data) {
if (error) throw error;
console.log('The file contains: ' + data);
});
rindle.bifurcate(stream, output1, output2, callback)
The callback is called when both output stream close.
Kind: static method of rindle
Summary: Bifurcate readable stream to two writable streams
Access: public
Param | Type | Description |
---|---|---|
stream | StreamReadable |
input stream |
output1 | StreamWritable |
first output stream |
output2 | StreamWritable |
second output stream |
callback | function |
callback (error) |
Example
var fs = require('fs');
var rindle = require('rindle');
var input = fs.createReadStream('foo/bar');
var output1 = fs.createWriteStream('foo/baz');
var output2 = fs.createWriteStream('foo/qux');
rindle.bifurcate(input, output1, output2, function(error) {
if (error) throw error;
console.log('All files written!');
});
StreamReadable
rindle.pipeWithEvents(stream, output, events) ⇒ Kind: static method of rindle
Summary: Pipe a stream along with certain events
Returns: StreamReadable
- resulting stream
Access: public
Param | Type | Description |
---|---|---|
stream | StreamReadable |
input stream |
output | StreamWritable |
output stream |
events | Array.<String> |
events to pipe |
Example
var rindle = require('rindle');
rindle.pipeWithEvents(input, output, [
'response',
'request'
]);
rindle.onEvent(stream, event, callback)
Kind: static method of rindle
Summary: Wait for a stream to emit a certain event
Access: public
Param | Type | Description |
---|---|---|
stream | Stream |
stream |
event | String |
event name |
callback | function |
callback (error, args...) |
Example
var rindle = require('rindle');
var fs = require('fs');
rindle.onEvent(fs.createReadStream('foo/bar'), 'open', function(error, fd) {
if (error) throw error;
console.log('The "open" event was emitted');
console.log(fd);
});
ReadableStream
rindle.getStreamFromString(string) ⇒ Kind: static method of rindle
Summary: Get a readable stream from a string
Returns: ReadableStream
- - string stream
Access: public
Param | Type | Description |
---|---|---|
string | String |
input string |
Example
var rindle = require('rindle');
rindle.getStreamFromString('Hello World!').pipe(process.stdout);
Support
If you're having any problem, please raise an issue on GitHub and I'll be happy to help.
Tests
Run the test suite by doing:
$ gulp test
Contribute
- Issue Tracker: github.com/jviotti/rindle/issues
- Source Code: github.com/jviotti/rindle
Before submitting a PR, please make sure that you include tests, and that jshint runs without any warning:
$ gulp lint
License
The project is licensed under the MIT license.