UNPKG

gendiff-ewwwgeny

Version:

gendiff for Hexlet

46 lines (35 loc) 7.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = _interopRequireDefault(require("lodash")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const baseIndentForNode = 2; const baseIndentForObject = baseIndentForNode * 2; const stringify = (value, depth) => { if (!_lodash.default.isObject(value)) { return value; } const indentForData = ' '.repeat(baseIndentForObject * 2 + baseIndentForObject * depth); const indentForBrace = ' '.repeat(baseIndentForObject + baseIndentForObject * depth); const keys = Object.keys(value); const stringObj = keys.reduce((acc, key) => `${acc}${key}: ${value[key]}`, ''); return `{\n${indentForData}${stringObj}\n${indentForBrace}}`; }; const nodeRenderingMethods = { added: (node, depth, indent) => `${indent}+ ${node.key}: ${stringify(node.currentValue, depth)}`, deleted: (node, depth, indent) => `${indent}- ${node.key}: ${stringify(node.currentValue, depth)}`, unchanged: (node, depth, indent) => `${indent} ${node.key}: ${stringify(node.currentValue, depth)}`, nested: (node, depth, indent, renderMethod) => `${indent} ${node.key}: ${renderMethod(node.children, depth + 1)}`, changed: (node, depth, indent) => [`${indent}- ${node.key}: ${stringify(node.oldValue, depth)}`, `${indent}+ ${node.key}: ${stringify(node.currentValue, depth)}`] }; const render = (ast, depth = 0) => { const indentForNode = ' '.repeat(baseIndentForNode + 2 * baseIndentForNode * depth); const indentForCloseBrace = ' '.repeat(2 * baseIndentForNode * depth); const joinedNodes = _lodash.default.flattenDeep(ast.map(node => nodeRenderingMethods[node.type](node, depth, indentForNode, render))).join('\n'); return `{\n${joinedNodes}\n${indentForCloseBrace}}`; }; var _default = render; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvdHJlZVJlbmRlcmVyLmpzIl0sIm5hbWVzIjpbImJhc2VJbmRlbnRGb3JOb2RlIiwiYmFzZUluZGVudEZvck9iamVjdCIsInN0cmluZ2lmeSIsInZhbHVlIiwiZGVwdGgiLCJfIiwiaXNPYmplY3QiLCJpbmRlbnRGb3JEYXRhIiwicmVwZWF0IiwiaW5kZW50Rm9yQnJhY2UiLCJrZXlzIiwiT2JqZWN0Iiwic3RyaW5nT2JqIiwicmVkdWNlIiwiYWNjIiwia2V5Iiwibm9kZVJlbmRlcmluZ01ldGhvZHMiLCJhZGRlZCIsIm5vZGUiLCJpbmRlbnQiLCJjdXJyZW50VmFsdWUiLCJkZWxldGVkIiwidW5jaGFuZ2VkIiwibmVzdGVkIiwicmVuZGVyTWV0aG9kIiwiY2hpbGRyZW4iLCJjaGFuZ2VkIiwib2xkVmFsdWUiLCJyZW5kZXIiLCJhc3QiLCJpbmRlbnRGb3JOb2RlIiwiaW5kZW50Rm9yQ2xvc2VCcmFjZSIsImpvaW5lZE5vZGVzIiwiZmxhdHRlbkRlZXAiLCJtYXAiLCJ0eXBlIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsQ0FBMUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBR0QsaUJBQWlCLEdBQUcsQ0FBaEQ7O0FBRUEsTUFBTUUsU0FBUyxHQUFHLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNsQyxNQUFJLENBQUNDLGdCQUFFQyxRQUFGLENBQVdILEtBQVgsQ0FBTCxFQUF3QjtBQUN0QixXQUFPQSxLQUFQO0FBQ0Q7O0FBQ0QsUUFBTUksYUFBYSxHQUFHLElBQUlDLE1BQUosQ0FBV1AsbUJBQW1CLEdBQUcsQ0FBdEIsR0FBMEJBLG1CQUFtQixHQUFHRyxLQUEzRCxDQUF0QjtBQUNBLFFBQU1LLGNBQWMsR0FBRyxJQUFJRCxNQUFKLENBQVdQLG1CQUFtQixHQUFHQSxtQkFBbUIsR0FBR0csS0FBdkQsQ0FBdkI7QUFDQSxRQUFNTSxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBUCxDQUFZUCxLQUFaLENBQWI7QUFDQSxRQUFNUyxTQUFTLEdBQUdGLElBQUksQ0FBQ0csTUFBTCxDQUFZLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFlLEdBQUVELEdBQUksR0FBRUMsR0FBSSxLQUFJWixLQUFLLENBQUNZLEdBQUQsQ0FBTSxFQUF0RCxFQUF5RCxFQUF6RCxDQUFsQjtBQUNBLFNBQVEsTUFBS1IsYUFBYyxHQUFFSyxTQUFVLEtBQUlILGNBQWUsR0FBMUQ7QUFDRCxDQVREOztBQVdBLE1BQU1PLG9CQUFvQixHQUFHO0FBQzNCQyxFQUFBQSxLQUFLLEVBQUUsQ0FBQ0MsSUFBRCxFQUFPZCxLQUFQLEVBQWNlLE1BQWQsS0FBMEIsR0FBRUEsTUFBTyxLQUFJRCxJQUFJLENBQUNILEdBQUksS0FBSWIsU0FBUyxDQUFDZ0IsSUFBSSxDQUFDRSxZQUFOLEVBQW9CaEIsS0FBcEIsQ0FBMkIsRUFEcEU7QUFFM0JpQixFQUFBQSxPQUFPLEVBQUUsQ0FBQ0gsSUFBRCxFQUFPZCxLQUFQLEVBQWNlLE1BQWQsS0FBMEIsR0FBRUEsTUFBTyxLQUFJRCxJQUFJLENBQUNILEdBQUksS0FBSWIsU0FBUyxDQUFDZ0IsSUFBSSxDQUFDRSxZQUFOLEVBQW9CaEIsS0FBcEIsQ0FBMkIsRUFGdEU7QUFHM0JrQixFQUFBQSxTQUFTLEVBQUUsQ0FBQ0osSUFBRCxFQUFPZCxLQUFQLEVBQWNlLE1BQWQsS0FBMEIsR0FBRUEsTUFBTyxLQUFJRCxJQUFJLENBQUNILEdBQUksS0FBSWIsU0FBUyxDQUFDZ0IsSUFBSSxDQUFDRSxZQUFOLEVBQW9CaEIsS0FBcEIsQ0FBMkIsRUFIeEU7QUFJM0JtQixFQUFBQSxNQUFNLEVBQUUsQ0FBQ0wsSUFBRCxFQUFPZCxLQUFQLEVBQWNlLE1BQWQsRUFBc0JLLFlBQXRCLEtBQXdDLEdBQUVMLE1BQU8sS0FBSUQsSUFBSSxDQUFDSCxHQUFJLEtBQUlTLFlBQVksQ0FBQ04sSUFBSSxDQUFDTyxRQUFOLEVBQWdCckIsS0FBSyxHQUFHLENBQXhCLENBQTJCLEVBSnRGO0FBSzNCc0IsRUFBQUEsT0FBTyxFQUFFLENBQUNSLElBQUQsRUFBT2QsS0FBUCxFQUFjZSxNQUFkLEtBQXlCLENBQy9CLEdBQUVBLE1BQU8sS0FBSUQsSUFBSSxDQUFDSCxHQUFJLEtBQUliLFNBQVMsQ0FBQ2dCLElBQUksQ0FBQ1MsUUFBTixFQUFnQnZCLEtBQWhCLENBQXVCLEVBRDNCLEVBRS9CLEdBQUVlLE1BQU8sS0FBSUQsSUFBSSxDQUFDSCxHQUFJLEtBQUliLFNBQVMsQ0FBQ2dCLElBQUksQ0FBQ0UsWUFBTixFQUFvQmhCLEtBQXBCLENBQTJCLEVBRi9CO0FBTFAsQ0FBN0I7O0FBV0EsTUFBTXdCLE1BQU0sR0FBRyxDQUFDQyxHQUFELEVBQU16QixLQUFLLEdBQUcsQ0FBZCxLQUFvQjtBQUNqQyxRQUFNMEIsYUFBYSxHQUFHLElBQUl0QixNQUFKLENBQVdSLGlCQUFpQixHQUFHLElBQUlBLGlCQUFKLEdBQXdCSSxLQUF2RCxDQUF0QjtBQUNBLFFBQU0yQixtQkFBbUIsR0FBRyxJQUFJdkIsTUFBSixDQUFXLElBQUlSLGlCQUFKLEdBQXdCSSxLQUFuQyxDQUE1Qjs7QUFDQSxRQUFNNEIsV0FBVyxHQUFHM0IsZ0JBQUU0QixXQUFGLENBQWNKLEdBQUcsQ0FDbENLLEdBRCtCLENBQzNCaEIsSUFBSSxJQUFJRixvQkFBb0IsQ0FBQ0UsSUFBSSxDQUFDaUIsSUFBTixDQUFwQixDQUFnQ2pCLElBQWhDLEVBQXNDZCxLQUF0QyxFQUE2QzBCLGFBQTdDLEVBQTRERixNQUE1RCxDQURtQixDQUFkLEVBRWpCUSxJQUZpQixDQUVaLElBRlksQ0FBcEI7O0FBR0EsU0FBUSxNQUFLSixXQUFZLEtBQUlELG1CQUFvQixHQUFqRDtBQUNELENBUEQ7O2VBU2VILE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBiYXNlSW5kZW50Rm9yTm9kZSA9IDI7XG5jb25zdCBiYXNlSW5kZW50Rm9yT2JqZWN0ID0gYmFzZUluZGVudEZvck5vZGUgKiAyO1xuXG5jb25zdCBzdHJpbmdpZnkgPSAodmFsdWUsIGRlcHRoKSA9PiB7XG4gIGlmICghXy5pc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgY29uc3QgaW5kZW50Rm9yRGF0YSA9ICcgJy5yZXBlYXQoYmFzZUluZGVudEZvck9iamVjdCAqIDIgKyBiYXNlSW5kZW50Rm9yT2JqZWN0ICogZGVwdGgpO1xuICBjb25zdCBpbmRlbnRGb3JCcmFjZSA9ICcgJy5yZXBlYXQoYmFzZUluZGVudEZvck9iamVjdCArIGJhc2VJbmRlbnRGb3JPYmplY3QgKiBkZXB0aCk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIGNvbnN0IHN0cmluZ09iaiA9IGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4gYCR7YWNjfSR7a2V5fTogJHt2YWx1ZVtrZXldfWAsICcnKTtcbiAgcmV0dXJuIGB7XFxuJHtpbmRlbnRGb3JEYXRhfSR7c3RyaW5nT2JqfVxcbiR7aW5kZW50Rm9yQnJhY2V9fWA7XG59O1xuXG5jb25zdCBub2RlUmVuZGVyaW5nTWV0aG9kcyA9IHtcbiAgYWRkZWQ6IChub2RlLCBkZXB0aCwgaW5kZW50KSA9PiBgJHtpbmRlbnR9KyAke25vZGUua2V5fTogJHtzdHJpbmdpZnkobm9kZS5jdXJyZW50VmFsdWUsIGRlcHRoKX1gLFxuICBkZWxldGVkOiAobm9kZSwgZGVwdGgsIGluZGVudCkgPT4gYCR7aW5kZW50fS0gJHtub2RlLmtleX06ICR7c3RyaW5naWZ5KG5vZGUuY3VycmVudFZhbHVlLCBkZXB0aCl9YCxcbiAgdW5jaGFuZ2VkOiAobm9kZSwgZGVwdGgsIGluZGVudCkgPT4gYCR7aW5kZW50fSAgJHtub2RlLmtleX06ICR7c3RyaW5naWZ5KG5vZGUuY3VycmVudFZhbHVlLCBkZXB0aCl9YCxcbiAgbmVzdGVkOiAobm9kZSwgZGVwdGgsIGluZGVudCwgcmVuZGVyTWV0aG9kKSA9PiBgJHtpbmRlbnR9ICAke25vZGUua2V5fTogJHtyZW5kZXJNZXRob2Qobm9kZS5jaGlsZHJlbiwgZGVwdGggKyAxKX1gLFxuICBjaGFuZ2VkOiAobm9kZSwgZGVwdGgsIGluZGVudCkgPT4gW1xuICAgIGAke2luZGVudH0tICR7bm9kZS5rZXl9OiAke3N0cmluZ2lmeShub2RlLm9sZFZhbHVlLCBkZXB0aCl9YCxcbiAgICBgJHtpbmRlbnR9KyAke25vZGUua2V5fTogJHtzdHJpbmdpZnkobm9kZS5jdXJyZW50VmFsdWUsIGRlcHRoKX1gLFxuICBdLFxufTtcblxuY29uc3QgcmVuZGVyID0gKGFzdCwgZGVwdGggPSAwKSA9PiB7XG4gIGNvbnN0IGluZGVudEZvck5vZGUgPSAnICcucmVwZWF0KGJhc2VJbmRlbnRGb3JOb2RlICsgMiAqIGJhc2VJbmRlbnRGb3JOb2RlICogZGVwdGgpO1xuICBjb25zdCBpbmRlbnRGb3JDbG9zZUJyYWNlID0gJyAnLnJlcGVhdCgyICogYmFzZUluZGVudEZvck5vZGUgKiBkZXB0aCk7XG4gIGNvbnN0IGpvaW5lZE5vZGVzID0gXy5mbGF0dGVuRGVlcChhc3RcbiAgICAubWFwKG5vZGUgPT4gbm9kZVJlbmRlcmluZ01ldGhvZHNbbm9kZS50eXBlXShub2RlLCBkZXB0aCwgaW5kZW50Rm9yTm9kZSwgcmVuZGVyKSkpXG4gICAgLmpvaW4oJ1xcbicpO1xuICByZXR1cm4gYHtcXG4ke2pvaW5lZE5vZGVzfVxcbiR7aW5kZW50Rm9yQ2xvc2VCcmFjZX19YDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlbmRlcjtcbiJdfQ==