UNPKG

json-processing

Version:

JSON Processing Tool

35 lines (34 loc) 958 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports = module.exports = create(1); exports.asc = exports; exports.desc = create(-1); exports.default = exports; /* Credit https://github.com/juliangruber */ function create(inv) { return function compare(prop) { return function (_a, _b) { var a = prop ? deep(_a, prop) : _a; var b = prop ? deep(_b, prop) : _b; return inv * (a < b ? -1 : a > b ? 1 : 0); }; }; } /* Credit https://github.com/juliangruber */ function deep(obj, prop) { var segs = prop.split('.'); while (segs.length) { var seg = segs.shift(); var existential = false; if (seg[seg.length - 1] == '?') { seg = seg.slice(0, -1); existential = true; } obj = obj[seg]; if (!obj && existential) return obj; } return obj; }