gendiff-ver2
Version:
gendiff project lvl 2
48 lines (41 loc) • 5.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var getString = function getString(ast) {
var iter = function iter(tree, lvl) {
var indent = _lodash2.default.repeat(' ', 4 * lvl);
var stringify = function stringify(elem) {
if (elem instanceof Object) {
var _result = JSON.stringify(elem, null, 8 + 4 * lvl).replace(/["]/g, '');
return '{' + _result.slice(1, -1) + ' ' + indent + '}';
}
return elem;
};
var result = tree.reduce(function (acc, obj) {
if (obj.type === 'same') {
return acc + '\n' + indent + ' ' + obj.body.key + ': ' + obj.body.oldValue;
}
if (obj.type === 'changed') {
return acc + '\n' + indent + ' + ' + obj.body.key + ': ' + stringify(obj.body.newValue) + '\n' + indent + ' - ' + stringify(obj.body.key) + ': ' + stringify(obj.body.oldValue);
}
if (obj.type === 'deleted') {
return acc + '\n' + indent + ' - ' + obj.body.key + ': ' + stringify(obj.body.oldValue);
}
if (obj.type === 'add') {
return acc + '\n' + indent + ' + ' + obj.body.key + ': ' + stringify(obj.body.oldValue);
}
if (obj.type === 'children') {
return acc + '\n ' + indent + obj.body.key + ': {' + iter(obj.body.oldValue, lvl + 1) + '\n ' + indent + '}';
}
return acc;
}, '');
return result;
};
return '{' + iter(ast, 0) + '\n}';
};
exports.default = getString;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mb3JtYXRzL3N0cmluZy5qcyJdLCJuYW1lcyI6WyJnZXRTdHJpbmciLCJhc3QiLCJpdGVyIiwidHJlZSIsImx2bCIsImluZGVudCIsInJlcGVhdCIsInN0cmluZ2lmeSIsImVsZW0iLCJPYmplY3QiLCJyZXN1bHQiLCJKU09OIiwicmVwbGFjZSIsInNsaWNlIiwicmVkdWNlIiwiYWNjIiwib2JqIiwidHlwZSIsImJvZHkiLCJrZXkiLCJvbGRWYWx1ZSIsIm5ld1ZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7Ozs7O0FBRUEsSUFBTUEsWUFBWSxTQUFaQSxTQUFZLENBQUNDLEdBQUQsRUFBUztBQUN6QixNQUFNQyxPQUFPLFNBQVBBLElBQU8sQ0FBQ0MsSUFBRCxFQUFPQyxHQUFQLEVBQWU7QUFDMUIsUUFBTUMsU0FBUyxpQkFBRUMsTUFBRixDQUFTLEdBQVQsRUFBYyxJQUFJRixHQUFsQixDQUFmO0FBQ0EsUUFBTUcsWUFBWSxTQUFaQSxTQUFZLENBQUNDLElBQUQsRUFBVTtBQUMxQixVQUFJQSxnQkFBZ0JDLE1BQXBCLEVBQTRCO0FBQzFCLFlBQU1DLFVBQVNDLEtBQUtKLFNBQUwsQ0FBZUMsSUFBZixFQUFxQixJQUFyQixFQUEyQixJQUFLLElBQUlKLEdBQXBDLEVBQTBDUSxPQUExQyxDQUFrRCxNQUFsRCxFQUEwRCxFQUExRCxDQUFmO0FBQ0EscUJBQVdGLFFBQU9HLEtBQVAsQ0FBYSxDQUFiLEVBQWdCLENBQUMsQ0FBakIsQ0FBWCxZQUFxQ1IsTUFBckM7QUFDRDtBQUNELGFBQU9HLElBQVA7QUFDRCxLQU5EOztBQVFBLFFBQU1FLFNBQVNQLEtBQUtXLE1BQUwsQ0FBWSxVQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBYztBQUN2QyxVQUFJQSxJQUFJQyxJQUFKLEtBQWEsTUFBakIsRUFBeUI7QUFDdkIsZUFBVUYsR0FBVixVQUFrQlYsTUFBbEIsWUFBK0JXLElBQUlFLElBQUosQ0FBU0MsR0FBeEMsVUFBZ0RILElBQUlFLElBQUosQ0FBU0UsUUFBekQ7QUFDRDtBQUNELFVBQUlKLElBQUlDLElBQUosS0FBYSxTQUFqQixFQUE0QjtBQUMxQixlQUFVRixHQUFWLFVBQWtCVixNQUFsQixZQUErQlcsSUFBSUUsSUFBSixDQUFTQyxHQUF4QyxVQUFnRFosVUFBVVMsSUFBSUUsSUFBSixDQUFTRyxRQUFuQixDQUFoRCxVQUFpRmhCLE1BQWpGLFlBQThGRSxVQUFVUyxJQUFJRSxJQUFKLENBQVNDLEdBQW5CLENBQTlGLFVBQTBIWixVQUFVUyxJQUFJRSxJQUFKLENBQVNFLFFBQW5CLENBQTFIO0FBQ0Q7QUFDRCxVQUFJSixJQUFJQyxJQUFKLEtBQWEsU0FBakIsRUFBNEI7QUFDMUIsZUFBVUYsR0FBVixVQUFrQlYsTUFBbEIsWUFBK0JXLElBQUlFLElBQUosQ0FBU0MsR0FBeEMsVUFBZ0RaLFVBQVVTLElBQUlFLElBQUosQ0FBU0UsUUFBbkIsQ0FBaEQ7QUFDRDtBQUNELFVBQUlKLElBQUlDLElBQUosS0FBYSxLQUFqQixFQUF3QjtBQUN0QixlQUFVRixHQUFWLFVBQWtCVixNQUFsQixZQUErQlcsSUFBSUUsSUFBSixDQUFTQyxHQUF4QyxVQUFnRFosVUFBVVMsSUFBSUUsSUFBSixDQUFTRSxRQUFuQixDQUFoRDtBQUNEO0FBQ0QsVUFBSUosSUFBSUMsSUFBSixLQUFhLFVBQWpCLEVBQTZCO0FBQzNCLGVBQVVGLEdBQVYsY0FBc0JWLE1BQXRCLEdBQStCVyxJQUFJRSxJQUFKLENBQVNDLEdBQXhDLFdBQWlEakIsS0FBS2MsSUFBSUUsSUFBSixDQUFTRSxRQUFkLEVBQXdCaEIsTUFBTSxDQUE5QixDQUFqRCxjQUEwRkMsTUFBMUY7QUFDRDtBQUNELGFBQU9VLEdBQVA7QUFDRCxLQWpCYyxFQWlCWixFQWpCWSxDQUFmO0FBa0JBLFdBQU9MLE1BQVA7QUFDRCxHQTdCRDtBQThCQSxlQUFXUixLQUFLRCxHQUFMLEVBQVUsQ0FBVixDQUFYO0FBQ0QsQ0FoQ0Q7O2tCQWtDZUQsUyIsImZpbGUiOiJzdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBnZXRTdHJpbmcgPSAoYXN0KSA9PiB7XG4gIGNvbnN0IGl0ZXIgPSAodHJlZSwgbHZsKSA9PiB7XG4gICAgY29uc3QgaW5kZW50ID0gXy5yZXBlYXQoJyAnLCA0ICogbHZsKTtcbiAgICBjb25zdCBzdHJpbmdpZnkgPSAoZWxlbSkgPT4ge1xuICAgICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5zdHJpbmdpZnkoZWxlbSwgbnVsbCwgOCArICg0ICogbHZsKSkucmVwbGFjZSgvW1wiXS9nLCAnJyk7XG4gICAgICAgIHJldHVybiBgeyR7cmVzdWx0LnNsaWNlKDEsIC0xKX0gICAgJHtpbmRlbnR9fWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gZWxlbTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gdHJlZS5yZWR1Y2UoKGFjYywgb2JqKSA9PiB7XG4gICAgICBpZiAob2JqLnR5cGUgPT09ICdzYW1lJykge1xuICAgICAgICByZXR1cm4gYCR7YWNjfVxcbiR7aW5kZW50fSAgICAke29iai5ib2R5LmtleX06ICR7b2JqLmJvZHkub2xkVmFsdWV9YDtcbiAgICAgIH1cbiAgICAgIGlmIChvYmoudHlwZSA9PT0gJ2NoYW5nZWQnKSB7XG4gICAgICAgIHJldHVybiBgJHthY2N9XFxuJHtpbmRlbnR9ICArICR7b2JqLmJvZHkua2V5fTogJHtzdHJpbmdpZnkob2JqLmJvZHkubmV3VmFsdWUpfVxcbiR7aW5kZW50fSAgLSAke3N0cmluZ2lmeShvYmouYm9keS5rZXkpfTogJHtzdHJpbmdpZnkob2JqLmJvZHkub2xkVmFsdWUpfWA7XG4gICAgICB9XG4gICAgICBpZiAob2JqLnR5cGUgPT09ICdkZWxldGVkJykge1xuICAgICAgICByZXR1cm4gYCR7YWNjfVxcbiR7aW5kZW50fSAgLSAke29iai5ib2R5LmtleX06ICR7c3RyaW5naWZ5KG9iai5ib2R5Lm9sZFZhbHVlKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG9iai50eXBlID09PSAnYWRkJykge1xuICAgICAgICByZXR1cm4gYCR7YWNjfVxcbiR7aW5kZW50fSAgKyAke29iai5ib2R5LmtleX06ICR7c3RyaW5naWZ5KG9iai5ib2R5Lm9sZFZhbHVlKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG9iai50eXBlID09PSAnY2hpbGRyZW4nKSB7XG4gICAgICAgIHJldHVybiBgJHthY2N9XFxuICAgICR7aW5kZW50fSR7b2JqLmJvZHkua2V5fTogeyR7aXRlcihvYmouYm9keS5vbGRWYWx1ZSwgbHZsICsgMSl9XFxuICAgICR7aW5kZW50fX1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCAnJyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgcmV0dXJuIGB7JHtpdGVyKGFzdCwgMCl9XFxufWA7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTdHJpbmc7XG4iXX0=