compare-files
Version:
Compare files contents
57 lines (46 loc) • 5.53 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 render = function render(ast) {
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
var tabWidth = 4;
var indent = ' '.repeat(depth * tabWidth);
var valToStr = function valToStr(v) {
var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : depth + 1;
if (v instanceof Object) {
var ind = ' '.repeat(d * tabWidth);
var elts = _lodash2.default.keys(v).map(function (key) {
return '' + ind + key + ': ' + valToStr(v[key], d + 1);
});
return '{\n' + elts.join('\n') + '\n' + ind.slice(tabWidth) + '}';
}
return v;
};
var toStr = function toStr(node) {
var key = node.key,
type = node.type,
before = node.before,
after = node.after,
children = node.children;
switch (type) {
case 'nested':
return '' + indent + key + ': ' + render(children, depth + 1);
case 'unchanged':
return '' + indent + key + ': ' + valToStr(before);
case 'deleted':
return indent.slice(2) + '- ' + key + ': ' + valToStr(before);
case 'added':
return indent.slice(2) + '+ ' + key + ': ' + valToStr(after);
default:
return '';
}
};
var rendered = _lodash2.default.flatten(ast).map(toStr);
return '{\n' + rendered.join('\n') + '\n' + indent.slice(tabWidth) + '}';
};
exports.default = render;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvbmVzdGVkLmpzIl0sIm5hbWVzIjpbInJlbmRlciIsImFzdCIsImRlcHRoIiwidGFiV2lkdGgiLCJpbmRlbnQiLCJyZXBlYXQiLCJ2YWxUb1N0ciIsInYiLCJkIiwiT2JqZWN0IiwiaW5kIiwiZWx0cyIsImtleXMiLCJtYXAiLCJrZXkiLCJqb2luIiwic2xpY2UiLCJ0b1N0ciIsIm5vZGUiLCJ0eXBlIiwiYmVmb3JlIiwiYWZ0ZXIiLCJjaGlsZHJlbiIsInJlbmRlcmVkIiwiZmxhdHRlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7OztBQUVBLElBQU1BLFNBQVMsU0FBVEEsTUFBUyxDQUFDQyxHQUFELEVBQW9CO0FBQUEsTUFBZEMsS0FBYyx1RUFBTixDQUFNOztBQUNqQyxNQUFNQyxXQUFXLENBQWpCO0FBQ0EsTUFBTUMsU0FBUyxJQUFJQyxNQUFKLENBQVdILFFBQVFDLFFBQW5CLENBQWY7QUFDQSxNQUFNRyxXQUFXLFNBQVhBLFFBQVcsQ0FBQ0MsQ0FBRCxFQUFzQjtBQUFBLFFBQWxCQyxDQUFrQix1RUFBZE4sUUFBUSxDQUFNOztBQUNyQyxRQUFJSyxhQUFhRSxNQUFqQixFQUF5QjtBQUN2QixVQUFNQyxNQUFNLElBQUlMLE1BQUosQ0FBV0csSUFBSUwsUUFBZixDQUFaO0FBQ0EsVUFBTVEsT0FBTyxpQkFBRUMsSUFBRixDQUFPTCxDQUFQLEVBQVVNLEdBQVYsQ0FBYztBQUFBLG9CQUFVSCxHQUFWLEdBQWdCSSxHQUFoQixVQUF3QlIsU0FBU0MsRUFBRU8sR0FBRixDQUFULEVBQWlCTixJQUFJLENBQXJCLENBQXhCO0FBQUEsT0FBZCxDQUFiO0FBQ0EscUJBQWFHLEtBQUtJLElBQUwsQ0FBVSxJQUFWLENBQWIsVUFBaUNMLElBQUlNLEtBQUosQ0FBVWIsUUFBVixDQUFqQztBQUNEO0FBQ0QsV0FBT0ksQ0FBUDtBQUNELEdBUEQ7QUFRQSxNQUFNVSxRQUFRLFNBQVJBLEtBQVEsQ0FBQ0MsSUFBRCxFQUFVO0FBQUEsUUFFcEJKLEdBRm9CLEdBT2xCSSxJQVBrQixDQUVwQkosR0FGb0I7QUFBQSxRQUdwQkssSUFIb0IsR0FPbEJELElBUGtCLENBR3BCQyxJQUhvQjtBQUFBLFFBSXBCQyxNQUpvQixHQU9sQkYsSUFQa0IsQ0FJcEJFLE1BSm9CO0FBQUEsUUFLcEJDLEtBTG9CLEdBT2xCSCxJQVBrQixDQUtwQkcsS0FMb0I7QUFBQSxRQU1wQkMsUUFOb0IsR0FPbEJKLElBUGtCLENBTXBCSSxRQU5vQjs7O0FBU3RCLFlBQVFILElBQVI7QUFDRSxXQUFLLFFBQUw7QUFDRSxvQkFBVWYsTUFBVixHQUFtQlUsR0FBbkIsVUFBMkJkLE9BQU9zQixRQUFQLEVBQWlCcEIsUUFBUSxDQUF6QixDQUEzQjtBQUNGLFdBQUssV0FBTDtBQUNFLG9CQUFVRSxNQUFWLEdBQW1CVSxHQUFuQixVQUEyQlIsU0FBU2MsTUFBVCxDQUEzQjtBQUNGLFdBQUssU0FBTDtBQUNFLGVBQVVoQixPQUFPWSxLQUFQLENBQWEsQ0FBYixDQUFWLFVBQThCRixHQUE5QixVQUFzQ1IsU0FBU2MsTUFBVCxDQUF0QztBQUNGLFdBQUssT0FBTDtBQUNFLGVBQVVoQixPQUFPWSxLQUFQLENBQWEsQ0FBYixDQUFWLFVBQThCRixHQUE5QixVQUFzQ1IsU0FBU2UsS0FBVCxDQUF0QztBQUNGO0FBQ0UsZUFBTyxFQUFQO0FBVko7QUFZRCxHQXJCRDs7QUF1QkEsTUFBTUUsV0FBVyxpQkFBRUMsT0FBRixDQUFVdkIsR0FBVixFQUFlWSxHQUFmLENBQW1CSSxLQUFuQixDQUFqQjtBQUNBLGlCQUFhTSxTQUFTUixJQUFULENBQWMsSUFBZCxDQUFiLFVBQXFDWCxPQUFPWSxLQUFQLENBQWFiLFFBQWIsQ0FBckM7QUFDRCxDQXBDRDs7a0JBc0NlSCxNIiwiZmlsZSI6Im5lc3RlZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IHJlbmRlciA9IChhc3QsIGRlcHRoID0gMSkgPT4ge1xuICBjb25zdCB0YWJXaWR0aCA9IDQ7XG4gIGNvbnN0IGluZGVudCA9ICcgJy5yZXBlYXQoZGVwdGggKiB0YWJXaWR0aCk7XG4gIGNvbnN0IHZhbFRvU3RyID0gKHYsIGQgPSBkZXB0aCArIDEpID0+IHtcbiAgICBpZiAodiBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgY29uc3QgaW5kID0gJyAnLnJlcGVhdChkICogdGFiV2lkdGgpO1xuICAgICAgY29uc3QgZWx0cyA9IF8ua2V5cyh2KS5tYXAoa2V5ID0+IGAke2luZH0ke2tleX06ICR7dmFsVG9TdHIodltrZXldLCBkICsgMSl9YCk7XG4gICAgICByZXR1cm4gYHtcXG4ke2VsdHMuam9pbignXFxuJyl9XFxuJHtpbmQuc2xpY2UodGFiV2lkdGgpfX1gO1xuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfTtcbiAgY29uc3QgdG9TdHIgPSAobm9kZSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIHR5cGUsXG4gICAgICBiZWZvcmUsXG4gICAgICBhZnRlcixcbiAgICAgIGNoaWxkcmVuLFxuICAgIH0gPSBub2RlO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICduZXN0ZWQnOlxuICAgICAgICByZXR1cm4gYCR7aW5kZW50fSR7a2V5fTogJHtyZW5kZXIoY2hpbGRyZW4sIGRlcHRoICsgMSl9YDtcbiAgICAgIGNhc2UgJ3VuY2hhbmdlZCc6XG4gICAgICAgIHJldHVybiBgJHtpbmRlbnR9JHtrZXl9OiAke3ZhbFRvU3RyKGJlZm9yZSl9YDtcbiAgICAgIGNhc2UgJ2RlbGV0ZWQnOlxuICAgICAgICByZXR1cm4gYCR7aW5kZW50LnNsaWNlKDIpfS0gJHtrZXl9OiAke3ZhbFRvU3RyKGJlZm9yZSl9YDtcbiAgICAgIGNhc2UgJ2FkZGVkJzpcbiAgICAgICAgcmV0dXJuIGAke2luZGVudC5zbGljZSgyKX0rICR7a2V5fTogJHt2YWxUb1N0cihhZnRlcil9YDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyZWQgPSBfLmZsYXR0ZW4oYXN0KS5tYXAodG9TdHIpO1xuICByZXR1cm4gYHtcXG4ke3JlbmRlcmVkLmpvaW4oJ1xcbicpfVxcbiR7aW5kZW50LnNsaWNlKHRhYldpZHRoKX19YDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlbmRlcjtcbiJdfQ==