json-prism
Version:
Immutable Prisms, i.e. Taking a Multifoci Json Path to Immutability, or A sentient item has some ability to communicate, either by sharing its emotions, broadcasting its thoughts telepathically, or speaking aloud.
45 lines (35 loc) • 1.45 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _require = require('json-atom'),
get = _require.get;
var _require2 = require('./json-path'),
stringify = _require2.stringify;
var _require3 = require('./trace'),
show = _require3.show;
var sortByPath = function sortByPath(url) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$mapping = _ref.mapping,
mapping = _ref$mapping === void 0 ? function (v) {
return v;
} : _ref$mapping,
_ref$asc = _ref.asc,
asc = _ref$asc === void 0 ? true : _ref$asc;
return function (a, b) {
// url = typeof url === 'number' ? `${url}` : url;
var _ref2 = asc ? [a, b] : [b, a],
_ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
left = _ref3[0],
right = _ref3[1];
url = stringify(url); // @TODO: patched jp.normalize + jp.stringify produce an absolute path, refactor for feature #RELATIVE/.../PATHS
var currentA = get(url)(left);
var currentB = get(url)(right);
show(currentA, currentB);
var result = +(mapping(currentA) > mapping(currentB)) || +(mapping(currentA) === mapping(currentB)) - 1;
show("is", a, "before", b, "? result:", result);
return result;
};
};
module.exports = {
sortByPath: sortByPath
};