json-processing
Version:
JSON Processing Tool
35 lines (34 loc) • 958 B
JavaScript
;
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;
}