Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jahewson/node-byline
Line-by-line Stream reader for node.js
https://github.com/jahewson/node-byline
Last synced: about 1 month ago
JSON representation
Line-by-line Stream reader for node.js
- Host: GitHub
- URL: https://github.com/jahewson/node-byline
- Owner: jahewson
- License: other
- Created: 2011-08-31T22:49:40.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2019-11-06T16:27:58.000Z (about 5 years ago)
- Last Synced: 2024-05-15T12:54:45.743Z (7 months ago)
- Language: JavaScript
- Homepage: https://github.com/jahewson/node-byline
- Size: 385 KB
- Stars: 324
- Watchers: 5
- Forks: 53
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nodejs-cn - byline - 超简单的逐行流读取器 (包 / 文件流)
- awesome-nodejs - node-byline - Line-by-line Stream reader. ![](https://img.shields.io/github/stars/jahewson/node-byline.svg?style=social&label=Star) (Repository / Streams)
- awesome-nodejs-cn - byline - **star:325** 超简单的逐行流阅读器 (包 / 流)
- stars - jahewson/node-byline - Line-by-line Stream reader for node.js (JavaScript)
- awesome-nodejs - byline - Super-simple line-by-line Stream reader. (Packages / Streams)
- awesome-nodejs-streams - jahewson/node-byline - Line-by-line Stream reader (Modules)
- awesome-nodejs - node-byline - Line-by-line Stream reader for node.js - ★ 264 (Streams)
- awesome-node - byline - Super-simple line-by-line Stream reader. (Packages / Streams)
- awesome-nodejs-cn - byline - 超简单的逐行流读取器. (目录 / 流处理)
README
# byline — buffered stream for reading lines
![npm package](https://nodei.co/npm/byline.png?downloads=true&downloadRank=true)
`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](http://www.unicode.org/reports/tr18/#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:
```javascript
var fs = require('fs'),
byline = require('byline');var stream = byline(fs.createReadStream('sample.txt', { encoding: 'utf8' }));
```The `data` event then emits lines:
```javascript
stream.on('data', function(line) {
console.log(line);
});
```# Standard API
You just need to add one line to wrap your readable `Stream` with a `LineStream`.```javascript
var fs = require('fs'),
byline = require('byline');var stream = fs.createReadStream('sample.txt');
stream = byline.createStream(stream);stream.on('data', function(line) {
console.log(line);
});
```# Piping
`byline` supports `pipe` (though it strips the line endings, of course).
```javascript
var stream = fs.createReadStream('sample.txt');
stream = byline.createStream(stream);
stream.pipe(fs.createWriteStream('nolines.txt'));
```Alternatively, you can create a readable/writable "through-stream" which doesn't wrap any specific
stream:```javascript
var stream = fs.createReadStream('sample.txt');
stream = byline.createStream(stream);
stream.pipe(fs.createWriteStream('nolines.txt'));
var input = fs.createReadStream('LICENSE');
var lineStream = byline.createStream();
input.pipe(lineStream);var output = fs.createWriteStream('test.txt');
lineStream.pipe(output);
```# 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.```javascript
var stream = fs.createReadStream('sample.txt');
stream = byline.createStream(stream);stream.on('readable', function() {
var line;
while (null !== (line = stream.read())) {
console.log(line);
}
});
```# Transform Stream
The `byline` transform stream can be directly manipulated like so:
```javascript
var LineStream = require('byline').LineStream;var input = fs.createReadStream('sample.txt');
var output = fs.createWriteStream('nolines.txt');var lineStream = new LineStream();
input.pipe(lineStream);
lineStream.pipe(output);```
# 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`:```javascript
"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