UNPKG

json-tots

Version:

Template of Templates, a.k.a Template Should Eat Itself

37 lines (36 loc) 1.69 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice")); var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray")); /* eslint-disable camelcase */ var jp = require('jsonpath'); var runPolicy = function runPolicy(keyPolicy, template, document) { var upwards = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 2; return function (_ref) { var _context; var path = _ref.path, tag = _ref.tag, source = _ref.source, templatePath = _ref.templatePath, tagPath = _ref.tagPath; var parentNodePath = jp.paths(template, path).pop(); var _parentNodePath$slice = (0, _slice["default"])(parentNodePath).call(parentNodePath, -upwards), _parentNodePath$slice2 = (0, _slicedToArray2["default"])(_parentNodePath$slice, 2), parent = _parentNodePath$slice2[0], child = _parentNodePath$slice2[1]; var newPath = keyPolicy(parent, child, tagPath, document); // transplant under new path templatePath = jp.stringify((0, _concat["default"])(_context = (0, _slice["default"])(parentNodePath).call(parentNodePath, 0, -upwards)).call(_context, [newPath])); jp.value(template, templatePath, jp.value(template, path)); // unset original path jp.value(template, path, undefined); return { template: template, templatePath: templatePath }; }; }; module.exports = { runPolicy: runPolicy };