stream-chain
Version:
Chain functions, generators, Node streams, and Web streams into a pipeline with backpressure support.
26 lines (22 loc) • 500 B
JavaScript
// @ts-self-types="./lines.d.ts"
import {none, flushable} from '../defs.js';
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;
});
};
export default lines;
export {lines};