UNPKG

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
"use strict"; 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 };