byline — buffered stream for reading lines
byline
is a simple module providing a LineStream
.
- node v0.10
streams2
(transform stream) - supports
pipe
- supports both UNIX and Windows line endings
- supports Unicode UTS #18 line boundaries
- can wrap any readable stream
- can be used as a readable-writable "through-stream" (transform stream)
- super-simple:
stream = byline(stream);
Install
npm install byline
or from source:
git clone git://github.com/jahewson/node-byline.git
cd node-byline
npm link
Convenience API
The byline
module can be used as a function to quickly wrap a readable stream:
var fs = byline = ; var stream = ;
The data
event then emits lines:
stream;
Standard API
You just need to add one line to wrap your readable Stream
with a LineStream
.
var fs = byline = ; var stream = fs;stream = byline; stream;
Piping
byline
supports pipe
(though it strips the line endings, of course).
var stream = fs;stream = byline;stream;
Alternatively, you can create a readable/writable "through-stream" which doesn't wrap any specific stream:
var stream = fs;stream = byline;stream; var input = fs;var lineStream = byline;input; var output = fs;lineStream;
Streams2 API
Node v0.10 added a new streams2 API. This allows the stream to be used in non-flowing mode and is preferred over the legacy pause() and resume() methods.
var stream = fs;stream = byline; stream;
Transform Stream
The byline
transform stream can be directly manipulated like so:
var LineStream = LineStream; var input = fs;var output = fs; var lineStream = ;input;lineStream;
Empty Lines
By default byline skips empty lines, if you want to keep them, pass the keepEmptyLines
option in
the call to byline.createStream(stream, options)
or byline(stream, options)
.
Tests
npm test
v0.8
If you want to use node-byline
with node v0.8 then you can use the 2.1.x series. Simply use the
following in your package.json
:
"dependencies": "byline": ">=2.1.0 <3.0.0"
Simple
Unlike other modules (of which there are many), byline
contains no:
- monkeypatching
- dependencies
- non-standard 'line' events which break
pipe
- limitations to only file streams
- CoffeeScript
- unnecessary code