UNPKG

sorting-lib

Version:

A library that makes sorting easier by introducing `Comparator`

37 lines (36 loc) 1.15 kB
"use strict"; 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;