streams
Version:
A lazy streams library for functional composition in JavaScript.
33 lines • 2.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.iteratorRange = iteratorRange;
function iteratorRange(start, end, options) {
const { step = Math.sign(end - start), inclusive = false } = typeof options === "undefined"
? { step: Math.sign(end - start) }
: typeof options === "number"
? { step: options }
: options;
if (end != start) {
if (Math.sign(step) != Math.sign(end - start)) {
throw new TypeError("step must be in the direction from start to end");
}
}
function* rangeSource() {
if (step == 0 && inclusive) {
yield end;
return;
}
const withinRange = end > start || step > 0
? inclusive
? (i) => i <= end
: (i) => i < end
: inclusive
? (i) => i >= end
: (i) => i > end;
for (let i = start; withinRange(i); i += step) {
yield i;
}
}
return rangeSource();
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc291cmNlcy9yYW5nZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQXNDQztBQXRDRCxTQUFnQixhQUFhLENBQzNCLEtBQWEsRUFDYixHQUFXLEVBQ1gsT0FBeUQ7SUFFekQsTUFBTSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxTQUFTLEdBQUcsS0FBSyxFQUFFLEdBQ3hELE9BQU8sT0FBTyxLQUFLLFdBQVc7UUFDNUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFO1FBQ2xDLENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRO1lBQzNCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNoQixJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxNQUFNLElBQUksU0FBUyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBQyxXQUFXO1FBQ25CLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQixNQUFNLEdBQUcsQ0FBQztZQUNWLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQ2YsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUNyQixDQUFDLENBQUMsU0FBUztnQkFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHO2dCQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHO1lBQ2xCLENBQUMsQ0FBQyxTQUFTO2dCQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUc7Z0JBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUV2QixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFdBQVcsRUFBRSxDQUFDO0FBQ3ZCLENBQUMifQ==