UNPKG

@rxap/utilities

Version:

A collection of utility functions, types and interfaces.

45 lines 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Range = exports.RangeIterator = void 0; class RangeIterator { constructor(range, reverse) { this.range = range; this.reverse = reverse; this.position = 0; } next() { const value = this.reverse ? this.range.end - this.position : this.range.start + this.position; this.position++; const done = this.reverse ? this.range.start === value + 1 : this.range.end === value - 1; return { value, done, }; } } exports.RangeIterator = RangeIterator; class Range { constructor(start, end) { this.start = start; this.end = end; if (this.start > this.end) { throw new Error(`The range start '${this.start}' must be less then the range end '${this.end}'!`); } } static Create(start, end) { return new Range(start, end); } [Symbol.iterator]() { return new RangeIterator(this, false); } reverse() { return { [Symbol.iterator]: () => new RangeIterator(this, true), }; } toArray() { return Array.from(this); } } exports.Range = Range; //# sourceMappingURL=range.js.map