UNPKG

sorting-lib

Version:

A library that makes sorting easier by introducing `Comparator`

32 lines (31 loc) 1.34 kB
"use strict"; 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;