sorting-lib
Version:
A library that makes sorting easier by introducing `Comparator`
37 lines (36 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.comparatorBuilder = exports.chainComparators = void 0;
function chainComparators(comparators) {
return function (a, b) {
for (var _i = 0, comparators_1 = comparators; _i < comparators_1.length; _i++) {
var comparator = comparators_1[_i];
var comparison = comparator(a, b);
if (comparison !== 0) {
return comparison;
}
}
return 0;
};
}
exports.chainComparators = chainComparators;
function invertComparator(comparator) {
return function (a, b) { return -comparator(a, b); };
}
function comparatorBuilder() {
var comparator = function () { return 0; };
return {
add: function (otherComparator) {
comparator = chainComparators([comparator, otherComparator]);
return this;
},
build: function () {
return comparator;
},
invert: function () {
comparator = invertComparator(comparator);
return this;
},
};
}
exports.comparatorBuilder = comparatorBuilder;