UNPKG

gendiff-ewwwgeny

Version:

gendiff for Hexlet

46 lines (35 loc) 7.6 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9fX19yZW5kZXJlcnMuanMiXSwibmFtZXMiOlsiYmFzZUluZGVudEZvck5vZGUiLCJiYXNlSW5kZW50Rm9yT2JqZWN0Iiwic3RyaW5naWZ5IiwidmFsdWUiLCJkZXB0aCIsIl8iLCJpc09iamVjdCIsImluZGVudEZvckRhdGEiLCJyZXBlYXQiLCJpbmRlbnRGb3JCcmFjZSIsImtleXMiLCJPYmplY3QiLCJzdHJpbmdPYmoiLCJyZWR1Y2UiLCJhY2MiLCJrZXkiLCJub2RlUmVuZGVyaW5nTWV0aG9kcyIsImFkZGVkIiwibm9kZSIsImluZGVudCIsImN1cnJlbnRWYWx1ZSIsImRlbGV0ZWQiLCJ1bmNoYW5nZWQiLCJuZXN0ZWQiLCJyZW5kZXJNZXRob2QiLCJjaGlsZHJlbiIsImNoYW5nZWQiLCJvbGRWYWx1ZSIsInJlbmRlciIsImFzdCIsImluZGVudEZvck5vZGUiLCJpbmRlbnRGb3JDbG9zZUJyYWNlIiwiam9pbmVkTm9kZXMiLCJmbGF0dGVuRGVlcCIsIm1hcCIsInR5cGUiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxDQUExQjtBQUNBLE1BQU1DLG1CQUFtQixHQUFHRCxpQkFBaUIsR0FBRyxDQUFoRDs7QUFFQSxNQUFNRSxTQUFTLEdBQUcsQ0FBQ0MsS0FBRCxFQUFRQyxLQUFSLEtBQWtCO0FBQ2xDLE1BQUksQ0FBQ0MsZ0JBQUVDLFFBQUYsQ0FBV0gsS0FBWCxDQUFMLEVBQXdCO0FBQ3RCLFdBQU9BLEtBQVA7QUFDRDs7QUFDRCxRQUFNSSxhQUFhLEdBQUcsSUFBSUMsTUFBSixDQUFXUCxtQkFBbUIsR0FBRyxDQUF0QixHQUEwQkEsbUJBQW1CLEdBQUdHLEtBQTNELENBQXRCO0FBQ0EsUUFBTUssY0FBYyxHQUFHLElBQUlELE1BQUosQ0FBV1AsbUJBQW1CLEdBQUdBLG1CQUFtQixHQUFHRyxLQUF2RCxDQUF2QjtBQUNBLFFBQU1NLElBQUksR0FBR0MsTUFBTSxDQUFDRCxJQUFQLENBQVlQLEtBQVosQ0FBYjtBQUNBLFFBQU1TLFNBQVMsR0FBR0YsSUFBSSxDQUFDRyxNQUFMLENBQVksQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWUsR0FBRUQsR0FBSSxHQUFFQyxHQUFJLEtBQUlaLEtBQUssQ0FBQ1ksR0FBRCxDQUFNLEVBQXRELEVBQXlELEVBQXpELENBQWxCO0FBQ0EsU0FBUSxNQUFLUixhQUFjLEdBQUVLLFNBQVUsS0FBSUgsY0FBZSxHQUExRDtBQUNELENBVEQ7O0FBV0EsTUFBTU8sb0JBQW9CLEdBQUc7QUFDM0JDLEVBQUFBLEtBQUssRUFBRSxDQUFDQyxJQUFELEVBQU9kLEtBQVAsRUFBY2UsTUFBZCxLQUEwQixHQUFFQSxNQUFPLEtBQUlELElBQUksQ0FBQ0gsR0FBSSxLQUFJYixTQUFTLENBQUNnQixJQUFJLENBQUNFLFlBQU4sRUFBb0JoQixLQUFwQixDQUEyQixFQURwRTtBQUUzQmlCLEVBQUFBLE9BQU8sRUFBRSxDQUFDSCxJQUFELEVBQU9kLEtBQVAsRUFBY2UsTUFBZCxLQUEwQixHQUFFQSxNQUFPLEtBQUlELElBQUksQ0FBQ0gsR0FBSSxLQUFJYixTQUFTLENBQUNnQixJQUFJLENBQUNFLFlBQU4sRUFBb0JoQixLQUFwQixDQUEyQixFQUZ0RTtBQUczQmtCLEVBQUFBLFNBQVMsRUFBRSxDQUFDSixJQUFELEVBQU9kLEtBQVAsRUFBY2UsTUFBZCxLQUEwQixHQUFFQSxNQUFPLEtBQUlELElBQUksQ0FBQ0gsR0FBSSxLQUFJYixTQUFTLENBQUNnQixJQUFJLENBQUNFLFlBQU4sRUFBb0JoQixLQUFwQixDQUEyQixFQUh4RTtBQUkzQm1CLEVBQUFBLE1BQU0sRUFBRSxDQUFDTCxJQUFELEVBQU9kLEtBQVAsRUFBY2UsTUFBZCxFQUFzQkssWUFBdEIsS0FBd0MsR0FBRUwsTUFBTyxLQUFJRCxJQUFJLENBQUNILEdBQUksS0FBSVMsWUFBWSxDQUFDTixJQUFJLENBQUNPLFFBQU4sRUFBZ0JyQixLQUFLLEdBQUcsQ0FBeEIsQ0FBMkIsRUFKdEY7QUFLM0JzQixFQUFBQSxPQUFPLEVBQUUsQ0FBQ1IsSUFBRCxFQUFPZCxLQUFQLEVBQWNlLE1BQWQsS0FBeUIsQ0FDL0IsR0FBRUEsTUFBTyxLQUFJRCxJQUFJLENBQUNILEdBQUksS0FBSWIsU0FBUyxDQUFDZ0IsSUFBSSxDQUFDUyxRQUFOLEVBQWdCdkIsS0FBaEIsQ0FBdUIsRUFEM0IsRUFFL0IsR0FBRWUsTUFBTyxLQUFJRCxJQUFJLENBQUNILEdBQUksS0FBSWIsU0FBUyxDQUFDZ0IsSUFBSSxDQUFDRSxZQUFOLEVBQW9CaEIsS0FBcEIsQ0FBMkIsRUFGL0I7QUFMUCxDQUE3Qjs7QUFXQSxNQUFNd0IsTUFBTSxHQUFHLENBQUNDLEdBQUQsRUFBTXpCLEtBQUssR0FBRyxDQUFkLEtBQW9CO0FBQ2pDLFFBQU0wQixhQUFhLEdBQUcsSUFBSXRCLE1BQUosQ0FBV1IsaUJBQWlCLEdBQUcsSUFBSUEsaUJBQUosR0FBd0JJLEtBQXZELENBQXRCO0FBQ0EsUUFBTTJCLG1CQUFtQixHQUFHLElBQUl2QixNQUFKLENBQVcsSUFBSVIsaUJBQUosR0FBd0JJLEtBQW5DLENBQTVCOztBQUNBLFFBQU00QixXQUFXLEdBQUczQixnQkFBRTRCLFdBQUYsQ0FBY0osR0FBRyxDQUNsQ0ssR0FEK0IsQ0FDM0JoQixJQUFJLElBQUlGLG9CQUFvQixDQUFDRSxJQUFJLENBQUNpQixJQUFOLENBQXBCLENBQWdDakIsSUFBaEMsRUFBc0NkLEtBQXRDLEVBQTZDMEIsYUFBN0MsRUFBNERGLE1BQTVELENBRG1CLENBQWQsRUFFakJRLElBRmlCLENBRVosSUFGWSxDQUFwQjs7QUFHQSxTQUFRLE1BQUtKLFdBQVksS0FBSUQsbUJBQW9CLEdBQWpEO0FBQ0QsQ0FQRDs7ZUFTZUgsTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IGJhc2VJbmRlbnRGb3JOb2RlID0gMjtcbmNvbnN0IGJhc2VJbmRlbnRGb3JPYmplY3QgPSBiYXNlSW5kZW50Rm9yTm9kZSAqIDI7XG5cbmNvbnN0IHN0cmluZ2lmeSA9ICh2YWx1ZSwgZGVwdGgpID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBjb25zdCBpbmRlbnRGb3JEYXRhID0gJyAnLnJlcGVhdChiYXNlSW5kZW50Rm9yT2JqZWN0ICogMiArIGJhc2VJbmRlbnRGb3JPYmplY3QgKiBkZXB0aCk7XG4gIGNvbnN0IGluZGVudEZvckJyYWNlID0gJyAnLnJlcGVhdChiYXNlSW5kZW50Rm9yT2JqZWN0ICsgYmFzZUluZGVudEZvck9iamVjdCAqIGRlcHRoKTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgY29uc3Qgc3RyaW5nT2JqID0ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiBgJHthY2N9JHtrZXl9OiAke3ZhbHVlW2tleV19YCwgJycpO1xuICByZXR1cm4gYHtcXG4ke2luZGVudEZvckRhdGF9JHtzdHJpbmdPYmp9XFxuJHtpbmRlbnRGb3JCcmFjZX19YDtcbn07XG5cbmNvbnN0IG5vZGVSZW5kZXJpbmdNZXRob2RzID0ge1xuICBhZGRlZDogKG5vZGUsIGRlcHRoLCBpbmRlbnQpID0+IGAke2luZGVudH0rICR7bm9kZS5rZXl9OiAke3N0cmluZ2lmeShub2RlLmN1cnJlbnRWYWx1ZSwgZGVwdGgpfWAsXG4gIGRlbGV0ZWQ6IChub2RlLCBkZXB0aCwgaW5kZW50KSA9PiBgJHtpbmRlbnR9LSAke25vZGUua2V5fTogJHtzdHJpbmdpZnkobm9kZS5jdXJyZW50VmFsdWUsIGRlcHRoKX1gLFxuICB1bmNoYW5nZWQ6IChub2RlLCBkZXB0aCwgaW5kZW50KSA9PiBgJHtpbmRlbnR9ICAke25vZGUua2V5fTogJHtzdHJpbmdpZnkobm9kZS5jdXJyZW50VmFsdWUsIGRlcHRoKX1gLFxuICBuZXN0ZWQ6IChub2RlLCBkZXB0aCwgaW5kZW50LCByZW5kZXJNZXRob2QpID0+IGAke2luZGVudH0gICR7bm9kZS5rZXl9OiAke3JlbmRlck1ldGhvZChub2RlLmNoaWxkcmVuLCBkZXB0aCArIDEpfWAsXG4gIGNoYW5nZWQ6IChub2RlLCBkZXB0aCwgaW5kZW50KSA9PiBbXG4gICAgYCR7aW5kZW50fS0gJHtub2RlLmtleX06ICR7c3RyaW5naWZ5KG5vZGUub2xkVmFsdWUsIGRlcHRoKX1gLFxuICAgIGAke2luZGVudH0rICR7bm9kZS5rZXl9OiAke3N0cmluZ2lmeShub2RlLmN1cnJlbnRWYWx1ZSwgZGVwdGgpfWAsXG4gIF0sXG59O1xuXG5jb25zdCByZW5kZXIgPSAoYXN0LCBkZXB0aCA9IDApID0+IHtcbiAgY29uc3QgaW5kZW50Rm9yTm9kZSA9ICcgJy5yZXBlYXQoYmFzZUluZGVudEZvck5vZGUgKyAyICogYmFzZUluZGVudEZvck5vZGUgKiBkZXB0aCk7XG4gIGNvbnN0IGluZGVudEZvckNsb3NlQnJhY2UgPSAnICcucmVwZWF0KDIgKiBiYXNlSW5kZW50Rm9yTm9kZSAqIGRlcHRoKTtcbiAgY29uc3Qgam9pbmVkTm9kZXMgPSBfLmZsYXR0ZW5EZWVwKGFzdFxuICAgIC5tYXAobm9kZSA9PiBub2RlUmVuZGVyaW5nTWV0aG9kc1tub2RlLnR5cGVdKG5vZGUsIGRlcHRoLCBpbmRlbnRGb3JOb2RlLCByZW5kZXIpKSlcbiAgICAuam9pbignXFxuJyk7XG4gIHJldHVybiBge1xcbiR7am9pbmVkTm9kZXN9XFxuJHtpbmRlbnRGb3JDbG9zZUJyYWNlfX1gO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcmVuZGVyO1xuIl19