UNPKG

@jasmith79/sequable

Version:

Library functions for working with generators

49 lines (48 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dropWhile = exports.drop = void 0; const sequable_js_1 = require("./sequable.js"); /** * Drops the first n items of the given Iterator, Iterable, or generator * function. * * @param n The number of items to drop. * @param sequable The Iterator, Iterable, or generator function sequence * to yield from. */ function* drop(n, sequable) { const iter = (0, sequable_js_1.toIterator)(sequable); let { value, done } = iter.next(); while (!done && n--) { ({ value, done } = iter.next()); } while (!done) { yield value; ({ value, done } = iter.next()); } if (value !== undefined) return value; } exports.drop = drop; /** * Drops the items of the given Iterator, Iterable, or generator function * until one item fails the supplied predicate function. * * @param pred The predicate function. * @param sequable The Iterator, Iterable, or generator function sequence * to drop from. */ function* dropWhile(pred, sequable) { const iter = (0, sequable_js_1.toIterator)(sequable); let { value, done } = iter.next(); while (!done && pred(value)) { ({ value, done } = iter.next()); } while (!done) { yield value; ({ value, done } = iter.next()); } if (value !== undefined) return value; } exports.dropWhile = dropWhile;