sorting-lib
Version:
A library that makes sorting easier by introducing `Comparator`
32 lines (31 loc) • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.comparing = exports.NilAs = void 0;
var primitive_comparators_1 = require("./primitive-comparators");
var nil_1 = require("./nil");
var NilAs;
(function (NilAs) {
NilAs[NilAs["Min"] = 0] = "Min";
NilAs[NilAs["Max"] = 1] = "Max";
})(NilAs = exports.NilAs || (exports.NilAs = {}));
function comparing(primitiveGetterOrKey, putNilAt) {
if (putNilAt === void 0) { putNilAt = NilAs.Max; }
if (primitiveGetterOrKey instanceof Function)
return function (a, b) {
var primitiveA = primitiveGetterOrKey(a);
var primitiveB = primitiveGetterOrKey(b);
if ((0, nil_1.isNotNil)(primitiveA) && (0, nil_1.isNotNil)(primitiveB))
return (0, primitive_comparators_1.comparePrimitive)(primitiveA, primitiveB);
if ((0, nil_1.isNotNil)(primitiveB))
return putNilAt === NilAs.Max ? 1 : -1;
if ((0, nil_1.isNotNil)(primitiveA))
return putNilAt === NilAs.Max ? -1 : 1;
return 0;
};
return comparing(function (item) { return primitiveGetterOrKey
.split('.')
.reduce(function (total, key) {
return total === null || total === void 0 ? void 0 : total[key];
}, item); });
}
exports.comparing = comparing;