compary
Version:
A library for composing complex compare-functions
30 lines • 1.16 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var naturalOrder = function (a, b) { return a < b ? -1 : a > b ? 1 : 0; };
function compare(comparison) {
return Object.assign(comparison, {
reversed: function () {
return compare(function (a, b) { return comparison(a, b) * -1; });
},
then: function (nextComparison) {
return compare(function (a, b) {
var result = comparison(a, b);
return result !== 0
? result
: nextComparison(a, b);
});
},
thenDescending: function (nextComparison) {
return this.then(compare(nextComparison)
.reversed());
},
thenBy: function (selector) {
return this.then(function (a, b) { return naturalOrder(selector(a), selector(b)); });
},
thenByDescending: function (selector) {
return this.then(compare(function (a, b) { return naturalOrder(selector(a), selector(b)); })
.reversed());
}
});
}
exports.compare = compare;
//# sourceMappingURL=Comparator.js.map