pragmatic-fp-ts
Version:
Opinionated functional programming library with easy use in mind
26 lines (25 loc) • 749 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ascend = void 0;
const main_1 = require("./main");
function ascend(toComparable) {
return (a, b) => {
const valA = (0, main_1.getValueOr)(null, a);
const valB = (0, main_1.getValueOr)(null, b);
const cvalA = valA && toComparable(valA);
const cvalB = valB && toComparable(valB);
if (cvalA === cvalB) {
return 0;
}
else if ((0, main_1.isSome)(cvalA) && (0, main_1.isSome)(cvalB)) {
return cvalA < cvalB ? 1 : -1;
}
else if ((0, main_1.isNil)(cvalA)) {
return -1;
}
else {
return 1;
}
};
}
exports.ascend = ascend;