@jasmith79/sequable
Version:
Library functions for working with generators
49 lines (48 loc) • 1.42 kB
JavaScript
;
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;