UNPKG

gendiff-ver2

Version:
48 lines (41 loc) 5.89 kB
'use strict'; 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=