|  | ||
|---|---|---|
| .. | ||
| docs | ||
| lib | ||
| package.json | ||
| README.md | ||
Split Stream
Transform stream which splits streamed data.
Usage
var splitStream = require( '@stdlib/streams/node/split' );
splitStream( [options] )
Creates a transform stream which splits streamed data.
var stdout = require( '@stdlib/streams/node/stdout' );
var stream = splitStream();
stream.pipe( stdout );
stream.write( '1\n2\n3' );
stream.end();
// prints: 1 => 2 => 3
The function accepts the following options:
- sep: separator used to split streamed data. Similar to String#split, a separator may be either a regular expression or astring. Default:/\r?\n/.
- objectMode: specifies whether a stream should operate in objectMode. Default: false.
- encoding: specifies how Bufferobjects should be decoded tostrings. Default:null.
- highWaterMark: specifies the Bufferlevel at whichwrite()calls start returningfalse.
- allowHalfOpen: specifies whether a stream should remain open even if one side ends. Default: false.
- writableObjectMode: specifies whether the writable side should be in objectMode. Default: false.
To set stream options,
var opts = {
    'sep': ',',
    'objectMode': true,
    'encoding': 'utf8',
    'highWaterMark': 64,
    'allowHalfOpen': true,
    'writableObjectMode': false // overridden by `objectMode` option when `objectMode=true`
};
var stream = splitStream( opts );
splitStream.factory( [options] )
Returns a function for creating streams which are identically configured according to provided options.
var opts = {
    'sep': '\t',
    'objectMode': true,
    'encoding': 'utf8',
    'highWaterMark': 64
};
var factory = splitStream.factory( opts );
// Create 10 identically configured streams...
var streams = [];
var i;
for ( i = 0; i < 10; i++ ) {
    streams.push( factory() );
}
This method accepts the same options as splitStream().
splitStream.objectMode( [options] )
This method is a convenience function to create streams which always operate in objectMode.
var stdout = require( '@stdlib/streams/node/stdout' );
var stream = splitStream.objectMode({
    'sep': ','
});
stream.pipe( stdout );
stream.write( 'a,b,c' );
stream.end();
// prints: a => b => c
This method accepts the same options as splitStream(); however, the method will always override the objectMode option in options.
Notes
- 
Similar to String#split, a separator which is a regular expression containing a matching group will result in the separator being retained in the output stream.var stdout = require( '@stdlib/streams/node/stdout' ); var stream = splitStream({ 'sep': /(,)/ }); stream.pipe( stdout ); stream.write( '1,2,3' ); stream.end(); // prints: 1 => , => 2 => , => 3
Examples
var transformStream = require( '@stdlib/streams/node/transform' );
var stdout = require( '@stdlib/streams/node/stdout' );
var splitStream = require( '@stdlib/streams/node/split' );
function append( chunk, enc, clbk ) {
    clbk( null, chunk.toString()+'\n' );
}
var newline;
var stream;
var i;
// Create a split stream to split tab delimited data:
stream = splitStream({
    'sep': /\t/
});
// Create a transform stream to make newline delimited data...
newline = transformStream({
    'transform': append,
    'objectMode': true
});
// Create a stream pipeline:
stream
    .pipe( newline )
    .pipe( stdout );
// Write data to the pipeline...
for ( i = 0; i < 10; i++ ) {
    stream.write( i+'\t', 'utf8' );
}
stream.end();