stream-chain
Version:
Chain functions as transform streams.
27 lines (22 loc) • 503 B
JavaScript
// @ts-self-types="./lines.d.ts"
;
const {none, flushable} = require('../defs');
const lines = () => {
let rest = '';
return flushable(function* (value) {
if (value === none) {
if (!rest) return;
const result = rest;
rest = '';
yield result;
return;
}
const lines = value.split(/\r?\n/g);
rest += lines[0];
if (lines.length < 2) return;
lines[0] = rest;
rest = lines.pop();
yield* lines;
});
};
module.exports = lines;