mancha
Version:
Javscript HTML rendering engine
52 lines • 1.31 kB
JavaScript
export class Iterator {
iterable;
constructor(iter) {
this.iterable = iter;
}
filter(fn) {
return new Iterator(Iterator.filterGenerator(fn, this.iterable));
}
map(fn) {
return new Iterator(Iterator.mapGenerator(fn, this.iterable));
}
find(fn) {
for (const val of this.iterable) {
if (fn(val))
return val;
}
return undefined;
}
array() {
return Array.from(this.iterable);
}
*generator() {
for (const val of this.iterable) {
yield val;
}
}
static *filterGenerator(fn, iter) {
for (const val of iter) {
if (fn(val))
yield val;
}
}
static *mapGenerator(fn, iter) {
for (const val of iter) {
yield fn(val);
}
}
static equals(a, b) {
const aIter = a[Symbol.iterator]();
const bIter = b[Symbol.iterator]();
let aVal = aIter.next();
let bVal = bIter.next();
while (!aVal.done && !bVal.done) {
if (aVal.value !== bVal.value)
return false;
aVal = aIter.next();
bVal = bIter.next();
}
return aVal.done === bVal.done;
}
}
//# sourceMappingURL=iterator.js.map