linq-extensions
Version:
Linq-like extension methods for JavaScript and TypeScript builtin collections
33 lines • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrderedIterable = void 0;
const iterable_1 = require("../iterable");
const ordering_1 = require("./ordering/ordering");
const types_1 = require("../types");
class OrderedIterable extends iterable_1.Iterable {
constructor(originalIterable, ordering) {
super();
this.originalIterable = originalIterable;
this.orderings = [];
this.orderings.push(ordering);
}
thenBy(selector, comparator = types_1.defaultComparator) {
this.orderings.push(new ordering_1.Ordering(selector, comparator, 'asc'));
return this;
}
thenByDescending(selector, comparator = types_1.defaultComparator) {
this.orderings.push(new ordering_1.Ordering(selector, comparator, 'desc'));
return this;
}
*[Symbol.iterator]() {
let result = this.originalIterable;
for (let i = this.orderings.length - 1; i >= 0; i--) {
result = this.orderings[i].execute(result);
}
for (const element of result) {
yield element;
}
}
}
exports.OrderedIterable = OrderedIterable;
//# sourceMappingURL=ordered-iterable.js.map