Transform stream which joins streamed data.
var joinStream = require( '@stdlib/streams/utils/join' );
Creates a transform stream which joins streamed data.
var stream = joinStream();
stream.pipe( process.stdout );
stream.write( '1' );
stream.write( '2' );
stream.write( '3' );
stream.end();
// => '1\n2\n3'
The function accepts the following options
:
- sep: separator used to join streamed data. Default:
'\n'
. - objectMode: specifies whether a stream should operate in object mode. Default:
false
. - encoding: specifies how
Buffer
objects should be decoded tostrings
. Default:null
. - highWaterMark: specifies the
Buffer
level at whichwrite()
calls start returningfalse
. - allowHalfOpen: specifies whether a stream should remain open even if one side ends. Default:
false
. - readableObjectMode: specifies whether the readable side should be in object mode. Default:
false
.
To set stream options
,
var opts = {
'sep': ',',
'objectMode': true,
'encoding': 'utf8',
'highWaterMark': 64,
'allowHalfOpen': true,
'readableObjectMode': false // overridden by `objectMode` option when `objectMode=true`
};
var stream = joinStream( opts );
Creates a reusable stream factory. The factory method ensures streams are configured identically by using the same set of provided options
.
var opts = {
'sep': '\t',
'objectMode': true,
'encoding': 'utf8',
'highWaterMark': 64
};
var factory = joinStream.factory( opts );
// Create 10 identically configured streams...
var streams = [];
var i;
for ( i = 0; i < 10; i++ ) {
streams.push( factory() );
}
This method is a convenience function to create streams which always operate in objectMode
. The method will always override the objectMode
option in options
.
var stream = joinStream.objectMode({
'sep': ','
});
stream.pipe( process.stdout );
stream.write( 'a' );
stream.write( 'b' );
stream.write( 'c' );
stream.end();
// => 'a,b,c'
var splitStream = require( '@stdlib/streams/utils/split' );
var joinStream = require( '@stdlib/streams/utils/join' );
var split;
var join;
var i;
// Create a split stream for tab delimited data:
split = splitStream({
'sep': /\t/
});
// Create a stream to make newline delimited data:
join = joinStream({
'sep': '\n'
});
// Create a stream pipeline:
split
.pipe( join )
.pipe( process.stdout );
// Write values to the split stream...
for ( i = 0; i < 10; i++ ) {
split.write( i+'\t', 'utf8' );
}
split.end();