artyoms-gendiff
Version:
my own gendiff app for study project
44 lines (32 loc) • 7.18 kB
JavaScript
;
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 makeTab = times => ' '.repeat(times);
const stringify = (value, depth) => {
if (!_lodash.default.isObject(value)) {
return value;
}
const strings = _lodash.default.keys(value).map(key => `${makeTab(depth + 2)} ${key}: ${value[key]}`);
return `{\n${strings.join('\n')}\n${makeTab(depth + 1)}}`;
};
const methods = {
unchanged: (depth, property, value) => `${makeTab(depth)} ${property}: ${stringify(value, depth)}`,
added: (depth, property, value) => `${makeTab(depth)}+ ${property}: ${stringify(value, depth)}`,
deleted: (depth, property, value) => `${makeTab(depth)}- ${property}: ${stringify(value, depth)}`,
updated: (depth, property, currentValue, previousValue) => [`${makeTab(depth)}- ${property}: ${stringify(previousValue, depth)}`, `${makeTab(depth)}+ ${property}: ${stringify(currentValue, depth)}`],
nested: (depth, property, currentValue, previousValue, children) => `${makeTab(depth)} ${property}: {\n${children}\n${makeTab(depth + 1)}}`
};
const toString = (depth, status, property, currentValue, previousValue, children) => methods[status](depth, property, currentValue, previousValue, children);
var _default = ast => {
const genOutput = (arr, depth) => {
const strings = arr.map(element => toString(depth, element.status, element.property, element.currentValue, element.previousValue, genOutput(element.children, depth + 2)));
return `${_lodash.default.flattenDeep(strings).join('\n')}`;
};
return `{\n${genOutput(ast, 1)}\n}`;
};
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXIuanMiXSwibmFtZXMiOlsibWFrZVRhYiIsInRpbWVzIiwicmVwZWF0Iiwic3RyaW5naWZ5IiwidmFsdWUiLCJkZXB0aCIsIl8iLCJpc09iamVjdCIsInN0cmluZ3MiLCJrZXlzIiwibWFwIiwia2V5Iiwiam9pbiIsIm1ldGhvZHMiLCJ1bmNoYW5nZWQiLCJwcm9wZXJ0eSIsImFkZGVkIiwiZGVsZXRlZCIsInVwZGF0ZWQiLCJjdXJyZW50VmFsdWUiLCJwcmV2aW91c1ZhbHVlIiwibmVzdGVkIiwiY2hpbGRyZW4iLCJ0b1N0cmluZyIsInN0YXR1cyIsImFzdCIsImdlbk91dHB1dCIsImFyciIsImVsZW1lbnQiLCJmbGF0dGVuRGVlcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUEsTUFBTUEsT0FBTyxHQUFHQyxLQUFLLElBQUksS0FBS0MsTUFBTCxDQUFZRCxLQUFaLENBQXpCOztBQUVBLE1BQU1FLFNBQVMsR0FBRyxDQUFDQyxLQUFELEVBQVFDLEtBQVIsS0FBa0I7QUFDbEMsTUFBSSxDQUFDQyxnQkFBRUMsUUFBRixDQUFXSCxLQUFYLENBQUwsRUFBd0I7QUFDdEIsV0FBT0EsS0FBUDtBQUNEOztBQUVELFFBQU1JLE9BQU8sR0FBR0YsZ0JBQUVHLElBQUYsQ0FBT0wsS0FBUCxFQUFjTSxHQUFkLENBQWtCQyxHQUFHLElBQUssR0FBRVgsT0FBTyxDQUFDSyxLQUFLLEdBQUcsQ0FBVCxDQUFZLEtBQUlNLEdBQUksS0FBSVAsS0FBSyxDQUFDTyxHQUFELENBQU0sRUFBdEUsQ0FBaEI7O0FBQ0EsU0FBUSxNQUFLSCxPQUFPLENBQUNJLElBQVIsQ0FBYSxJQUFiLENBQW1CLEtBQUlaLE9BQU8sQ0FBQ0ssS0FBSyxHQUFHLENBQVQsQ0FBWSxHQUF2RDtBQUNELENBUEQ7O0FBU0EsTUFBTVEsT0FBTyxHQUFHO0FBQ2RDLEVBQUFBLFNBQVMsRUFBRSxDQUFDVCxLQUFELEVBQVFVLFFBQVIsRUFBa0JYLEtBQWxCLEtBQTZCLEdBQUVKLE9BQU8sQ0FBQ0ssS0FBRCxDQUFRLEtBQUlVLFFBQVMsS0FBSVosU0FBUyxDQUFDQyxLQUFELEVBQVFDLEtBQVIsQ0FBZSxFQURwRjtBQUVkVyxFQUFBQSxLQUFLLEVBQUUsQ0FBQ1gsS0FBRCxFQUFRVSxRQUFSLEVBQWtCWCxLQUFsQixLQUE2QixHQUFFSixPQUFPLENBQUNLLEtBQUQsQ0FBUSxLQUFJVSxRQUFTLEtBQUlaLFNBQVMsQ0FBQ0MsS0FBRCxFQUFRQyxLQUFSLENBQWUsRUFGaEY7QUFHZFksRUFBQUEsT0FBTyxFQUFFLENBQUNaLEtBQUQsRUFBUVUsUUFBUixFQUFrQlgsS0FBbEIsS0FBNkIsR0FBRUosT0FBTyxDQUFDSyxLQUFELENBQVEsS0FBSVUsUUFBUyxLQUFJWixTQUFTLENBQUNDLEtBQUQsRUFBUUMsS0FBUixDQUFlLEVBSGxGO0FBSWRhLEVBQUFBLE9BQU8sRUFBRSxDQUFDYixLQUFELEVBQVFVLFFBQVIsRUFBa0JJLFlBQWxCLEVBQWdDQyxhQUFoQyxLQUFrRCxDQUFFLEdBQUVwQixPQUFPLENBQUNLLEtBQUQsQ0FBUSxLQUFJVSxRQUFTLEtBQUlaLFNBQVMsQ0FBQ2lCLGFBQUQsRUFBZ0JmLEtBQWhCLENBQXVCLEVBQXBFLEVBQXdFLEdBQUVMLE9BQU8sQ0FBQ0ssS0FBRCxDQUFRLEtBQUlVLFFBQVMsS0FBSVosU0FBUyxDQUFDZ0IsWUFBRCxFQUFlZCxLQUFmLENBQXNCLEVBQXpJLENBSjdDO0FBS2RnQixFQUFBQSxNQUFNLEVBQUUsQ0FBQ2hCLEtBQUQsRUFBUVUsUUFBUixFQUFrQkksWUFBbEIsRUFBZ0NDLGFBQWhDLEVBQStDRSxRQUEvQyxLQUE2RCxHQUFFdEIsT0FBTyxDQUFDSyxLQUFELENBQVEsS0FBSVUsUUFBUyxRQUFPTyxRQUFTLEtBQUl0QixPQUFPLENBQUNLLEtBQUssR0FBRyxDQUFULENBQVk7QUFMNUgsQ0FBaEI7O0FBUUEsTUFBTWtCLFFBQVEsR0FBRyxDQUNmbEIsS0FEZSxFQUNSbUIsTUFEUSxFQUNBVCxRQURBLEVBQ1VJLFlBRFYsRUFDd0JDLGFBRHhCLEVBQ3VDRSxRQUR2QyxLQUVaVCxPQUFPLENBQUNXLE1BQUQsQ0FBUCxDQUFnQm5CLEtBQWhCLEVBQXVCVSxRQUF2QixFQUFpQ0ksWUFBakMsRUFBK0NDLGFBQS9DLEVBQThERSxRQUE5RCxDQUZMOztlQUlnQkcsR0FBRCxJQUFTO0FBQ3RCLFFBQU1DLFNBQVMsR0FBRyxDQUFDQyxHQUFELEVBQU10QixLQUFOLEtBQWdCO0FBQ2hDLFVBQU1HLE9BQU8sR0FBR21CLEdBQUcsQ0FBQ2pCLEdBQUosQ0FBUWtCLE9BQU8sSUFBSUwsUUFBUSxDQUN6Q2xCLEtBRHlDLEVBRXpDdUIsT0FBTyxDQUFDSixNQUZpQyxFQUd6Q0ksT0FBTyxDQUFDYixRQUhpQyxFQUl6Q2EsT0FBTyxDQUFDVCxZQUppQyxFQUt6Q1MsT0FBTyxDQUFDUixhQUxpQyxFQU16Q00sU0FBUyxDQUFDRSxPQUFPLENBQUNOLFFBQVQsRUFBbUJqQixLQUFLLEdBQUcsQ0FBM0IsQ0FOZ0MsQ0FBM0IsQ0FBaEI7QUFTQSxXQUFRLEdBQUVDLGdCQUFFdUIsV0FBRixDQUFjckIsT0FBZCxFQUF1QkksSUFBdkIsQ0FBNEIsSUFBNUIsQ0FBa0MsRUFBNUM7QUFDRCxHQVhEOztBQWFBLFNBQVEsTUFBS2MsU0FBUyxDQUFDRCxHQUFELEVBQU0sQ0FBTixDQUFTLEtBQS9CO0FBQ0QsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IG1ha2VUYWIgPSB0aW1lcyA9PiAnICAnLnJlcGVhdCh0aW1lcyk7XG5cbmNvbnN0IHN0cmluZ2lmeSA9ICh2YWx1ZSwgZGVwdGgpID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHN0cmluZ3MgPSBfLmtleXModmFsdWUpLm1hcChrZXkgPT4gYCR7bWFrZVRhYihkZXB0aCArIDIpfSAgJHtrZXl9OiAke3ZhbHVlW2tleV19YCk7XG4gIHJldHVybiBge1xcbiR7c3RyaW5ncy5qb2luKCdcXG4nKX1cXG4ke21ha2VUYWIoZGVwdGggKyAxKX19YDtcbn07XG5cbmNvbnN0IG1ldGhvZHMgPSB7XG4gIHVuY2hhbmdlZDogKGRlcHRoLCBwcm9wZXJ0eSwgdmFsdWUpID0+IGAke21ha2VUYWIoZGVwdGgpfSAgJHtwcm9wZXJ0eX06ICR7c3RyaW5naWZ5KHZhbHVlLCBkZXB0aCl9YCxcbiAgYWRkZWQ6IChkZXB0aCwgcHJvcGVydHksIHZhbHVlKSA9PiBgJHttYWtlVGFiKGRlcHRoKX0rICR7cHJvcGVydHl9OiAke3N0cmluZ2lmeSh2YWx1ZSwgZGVwdGgpfWAsXG4gIGRlbGV0ZWQ6IChkZXB0aCwgcHJvcGVydHksIHZhbHVlKSA9PiBgJHttYWtlVGFiKGRlcHRoKX0tICR7cHJvcGVydHl9OiAke3N0cmluZ2lmeSh2YWx1ZSwgZGVwdGgpfWAsXG4gIHVwZGF0ZWQ6IChkZXB0aCwgcHJvcGVydHksIGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSkgPT4gW2Ake21ha2VUYWIoZGVwdGgpfS0gJHtwcm9wZXJ0eX06ICR7c3RyaW5naWZ5KHByZXZpb3VzVmFsdWUsIGRlcHRoKX1gLCBgJHttYWtlVGFiKGRlcHRoKX0rICR7cHJvcGVydHl9OiAke3N0cmluZ2lmeShjdXJyZW50VmFsdWUsIGRlcHRoKX1gXSxcbiAgbmVzdGVkOiAoZGVwdGgsIHByb3BlcnR5LCBjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUsIGNoaWxkcmVuKSA9PiBgJHttYWtlVGFiKGRlcHRoKX0gICR7cHJvcGVydHl9OiB7XFxuJHtjaGlsZHJlbn1cXG4ke21ha2VUYWIoZGVwdGggKyAxKX19YCxcbn07XG5cbmNvbnN0IHRvU3RyaW5nID0gKFxuICBkZXB0aCwgc3RhdHVzLCBwcm9wZXJ0eSwgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlLCBjaGlsZHJlbixcbikgPT4gbWV0aG9kc1tzdGF0dXNdKGRlcHRoLCBwcm9wZXJ0eSwgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlLCBjaGlsZHJlbik7XG5cbmV4cG9ydCBkZWZhdWx0IChhc3QpID0+IHtcbiAgY29uc3QgZ2VuT3V0cHV0ID0gKGFyciwgZGVwdGgpID0+IHtcbiAgICBjb25zdCBzdHJpbmdzID0gYXJyLm1hcChlbGVtZW50ID0+IHRvU3RyaW5nKFxuICAgICAgZGVwdGgsXG4gICAgICBlbGVtZW50LnN0YXR1cyxcbiAgICAgIGVsZW1lbnQucHJvcGVydHksXG4gICAgICBlbGVtZW50LmN1cnJlbnRWYWx1ZSxcbiAgICAgIGVsZW1lbnQucHJldmlvdXNWYWx1ZSxcbiAgICAgIGdlbk91dHB1dChlbGVtZW50LmNoaWxkcmVuLCBkZXB0aCArIDIpLFxuICAgICkpO1xuXG4gICAgcmV0dXJuIGAke18uZmxhdHRlbkRlZXAoc3RyaW5ncykuam9pbignXFxuJyl9YDtcbiAgfTtcblxuICByZXR1cm4gYHtcXG4ke2dlbk91dHB1dChhc3QsIDEpfVxcbn1gO1xufTtcbiJdfQ==