@rxap/utilities
Version:
A collection of utility functions, types and interfaces.
45 lines • 1.27 kB
JavaScript
"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