UNPKG

@klodianimeri/pipejs

Version:

Pipe functions that provide convenient and efficient ways to work with iterators.

27 lines (21 loc) 762 B
import { Pipe } from "../pipe.js"; import { Done } from "../util/index.js"; export function takeWhile(predicate: (element: any, inclusive?: number) => boolean, inclusive?: boolean): Pipe { inclusive = typeof inclusive === 'boolean' ? inclusive : false; return () => { var i: number = -1; return (result: IteratorResult<any>): IteratorResult<any> | Array<IteratorResult<any>> => { ++i; if (result?.done) { return result; } if (!predicate(result.value, i)) { if (inclusive) { return [result, Done()] } return Done(); } return result; }; } }