gendiff-irastypain
Version:
Compares two configuration files and shows a difference.
74 lines (62 loc) • 7.02 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 formatLines = function formatLines(lines, level) {
var ident = ' '.repeat(level);
return '{\n' + ident + lines.join('\n' + ident) + '\n' + ident + '}';
};
var formatValue = function formatValue(rawValue, level) {
if (_lodash2.default.isObject(rawValue)) {
var lines = _lodash2.default.keys(rawValue).map(function (key) {
return ' ' + key + ': ' + rawValue[key];
});
return formatLines(lines, level + 1);
}
return '' + rawValue;
};
var nodeTypes = [{
type: 'nested',
format: function format(node, level, func) {
return ' ' + node.key + ': ' + func(node.value, level + 1);
}
}, {
type: 'updated',
format: function format(node, level) {
var newValue = formatValue(node.value.new, level);
var oldValue = formatValue(node.value.old, level);
var ident = ' '.repeat(level);
return ' + ' + node.key + ': ' + newValue + '\n' + ident + ' - ' + node.key + ': ' + oldValue;
}
}, {
type: 'added',
format: function format(node, level) {
return ' + ' + node.key + ': ' + formatValue(node.value, level);
}
}, {
type: 'deleted',
format: function format(node, level) {
return ' - ' + node.key + ': ' + formatValue(node.value, level);
}
}, {
type: 'unchanged',
format: function format(node, level) {
return ' ' + node.key + ': ' + formatValue(node.value, level);
}
}];
var formatAst = function formatAst(ast) {
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var lines = ast.map(function (node) {
var _$find = _lodash2.default.find(nodeTypes, function (item) {
return item.type === node.type;
}),
format = _$find.format;
return format(node, level, formatAst);
});
return formatLines(lines, level);
};
exports.default = formatAst;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvc2ltcGxlLmpzIl0sIm5hbWVzIjpbImZvcm1hdExpbmVzIiwibGluZXMiLCJsZXZlbCIsImlkZW50IiwicmVwZWF0Iiwiam9pbiIsImZvcm1hdFZhbHVlIiwicmF3VmFsdWUiLCJpc09iamVjdCIsImtleXMiLCJtYXAiLCJrZXkiLCJub2RlVHlwZXMiLCJ0eXBlIiwiZm9ybWF0Iiwibm9kZSIsImZ1bmMiLCJ2YWx1ZSIsIm5ld1ZhbHVlIiwibmV3Iiwib2xkVmFsdWUiLCJvbGQiLCJmb3JtYXRBc3QiLCJhc3QiLCJmaW5kIiwiaXRlbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7OztBQUVBLElBQU1BLGNBQWMsU0FBZEEsV0FBYyxDQUFDQyxLQUFELEVBQVFDLEtBQVIsRUFBa0I7QUFDcEMsTUFBTUMsUUFBUSxPQUFPQyxNQUFQLENBQWNGLEtBQWQsQ0FBZDtBQUNBLGlCQUFhQyxLQUFiLEdBQXFCRixNQUFNSSxJQUFOLFFBQWdCRixLQUFoQixDQUFyQixVQUFrREEsS0FBbEQ7QUFDRCxDQUhEOztBQUtBLElBQU1HLGNBQWMsU0FBZEEsV0FBYyxDQUFDQyxRQUFELEVBQVdMLEtBQVgsRUFBcUI7QUFDdkMsTUFBSSxpQkFBRU0sUUFBRixDQUFXRCxRQUFYLENBQUosRUFBMEI7QUFDeEIsUUFBTU4sUUFBUSxpQkFBRVEsSUFBRixDQUFPRixRQUFQLEVBQWlCRyxHQUFqQixDQUFxQjtBQUFBLHNCQUFjQyxHQUFkLFVBQXNCSixTQUFTSSxHQUFULENBQXRCO0FBQUEsS0FBckIsQ0FBZDtBQUNBLFdBQU9YLFlBQVlDLEtBQVosRUFBbUJDLFFBQVEsQ0FBM0IsQ0FBUDtBQUNEO0FBQ0QsY0FBVUssUUFBVjtBQUNELENBTkQ7O0FBUUEsSUFBTUssWUFBWSxDQUNoQjtBQUNFQyxRQUFNLFFBRFI7QUFFRUMsVUFBUSxnQkFBQ0MsSUFBRCxFQUFPYixLQUFQLEVBQWNjLElBQWQ7QUFBQSxvQkFBOEJELEtBQUtKLEdBQW5DLFVBQTJDSyxLQUFLRCxLQUFLRSxLQUFWLEVBQWlCZixRQUFRLENBQXpCLENBQTNDO0FBQUE7QUFGVixDQURnQixFQUtoQjtBQUNFVyxRQUFNLFNBRFI7QUFFRUMsVUFBUSxnQkFBQ0MsSUFBRCxFQUFPYixLQUFQLEVBQWlCO0FBQ3ZCLFFBQU1nQixXQUFXWixZQUFZUyxLQUFLRSxLQUFMLENBQVdFLEdBQXZCLEVBQTRCakIsS0FBNUIsQ0FBakI7QUFDQSxRQUFNa0IsV0FBV2QsWUFBWVMsS0FBS0UsS0FBTCxDQUFXSSxHQUF2QixFQUE0Qm5CLEtBQTVCLENBQWpCO0FBQ0EsUUFBTUMsUUFBUSxPQUFPQyxNQUFQLENBQWNGLEtBQWQsQ0FBZDtBQUNBLG9CQUFjYSxLQUFLSixHQUFuQixVQUEyQk8sUUFBM0IsVUFBd0NmLEtBQXhDLFlBQW9EWSxLQUFLSixHQUF6RCxVQUFpRVMsUUFBakU7QUFDRDtBQVBILENBTGdCLEVBY2hCO0FBQ0VQLFFBQU0sT0FEUjtBQUVFQyxVQUFRLGdCQUFDQyxJQUFELEVBQU9iLEtBQVA7QUFBQSxvQkFBd0JhLEtBQUtKLEdBQTdCLFVBQXFDTCxZQUFZUyxLQUFLRSxLQUFqQixFQUF3QmYsS0FBeEIsQ0FBckM7QUFBQTtBQUZWLENBZGdCLEVBa0JoQjtBQUNFVyxRQUFNLFNBRFI7QUFFRUMsVUFBUSxnQkFBQ0MsSUFBRCxFQUFPYixLQUFQO0FBQUEsb0JBQXdCYSxLQUFLSixHQUE3QixVQUFxQ0wsWUFBWVMsS0FBS0UsS0FBakIsRUFBd0JmLEtBQXhCLENBQXJDO0FBQUE7QUFGVixDQWxCZ0IsRUFzQmhCO0FBQ0VXLFFBQU0sV0FEUjtBQUVFQyxVQUFRLGdCQUFDQyxJQUFELEVBQU9iLEtBQVA7QUFBQSxvQkFBd0JhLEtBQUtKLEdBQTdCLFVBQXFDTCxZQUFZUyxLQUFLRSxLQUFqQixFQUF3QmYsS0FBeEIsQ0FBckM7QUFBQTtBQUZWLENBdEJnQixDQUFsQjs7QUE0QkEsSUFBTW9CLFlBQVksU0FBWkEsU0FBWSxDQUFDQyxHQUFELEVBQW9CO0FBQUEsTUFBZHJCLEtBQWMsdUVBQU4sQ0FBTTs7QUFDcEMsTUFBTUQsUUFBUXNCLElBQUliLEdBQUosQ0FBUSxVQUFDSyxJQUFELEVBQVU7QUFBQSxpQkFDWCxpQkFBRVMsSUFBRixDQUFPWixTQUFQLEVBQWtCO0FBQUEsYUFBUWEsS0FBS1osSUFBTCxLQUFjRSxLQUFLRixJQUEzQjtBQUFBLEtBQWxCLENBRFc7QUFBQSxRQUN0QkMsTUFEc0IsVUFDdEJBLE1BRHNCOztBQUU5QixXQUFPQSxPQUFPQyxJQUFQLEVBQWFiLEtBQWIsRUFBb0JvQixTQUFwQixDQUFQO0FBQ0QsR0FIYSxDQUFkOztBQUtBLFNBQU90QixZQUFZQyxLQUFaLEVBQW1CQyxLQUFuQixDQUFQO0FBQ0QsQ0FQRDs7a0JBU2VvQixTIiwiZmlsZSI6InNpbXBsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IGZvcm1hdExpbmVzID0gKGxpbmVzLCBsZXZlbCkgPT4ge1xuICBjb25zdCBpZGVudCA9ICcgICAgJy5yZXBlYXQobGV2ZWwpO1xuICByZXR1cm4gYHtcXG4ke2lkZW50fSR7bGluZXMuam9pbihgXFxuJHtpZGVudH1gKX1cXG4ke2lkZW50fX1gO1xufTtcblxuY29uc3QgZm9ybWF0VmFsdWUgPSAocmF3VmFsdWUsIGxldmVsKSA9PiB7XG4gIGlmIChfLmlzT2JqZWN0KHJhd1ZhbHVlKSkge1xuICAgIGNvbnN0IGxpbmVzID0gXy5rZXlzKHJhd1ZhbHVlKS5tYXAoa2V5ID0+IGAgICAgJHtrZXl9OiAke3Jhd1ZhbHVlW2tleV19YCk7XG4gICAgcmV0dXJuIGZvcm1hdExpbmVzKGxpbmVzLCBsZXZlbCArIDEpO1xuICB9XG4gIHJldHVybiBgJHtyYXdWYWx1ZX1gO1xufTtcblxuY29uc3Qgbm9kZVR5cGVzID0gW1xuICB7XG4gICAgdHlwZTogJ25lc3RlZCcsXG4gICAgZm9ybWF0OiAobm9kZSwgbGV2ZWwsIGZ1bmMpID0+IGAgICAgJHtub2RlLmtleX06ICR7ZnVuYyhub2RlLnZhbHVlLCBsZXZlbCArIDEpfWAsXG4gIH0sXG4gIHtcbiAgICB0eXBlOiAndXBkYXRlZCcsXG4gICAgZm9ybWF0OiAobm9kZSwgbGV2ZWwpID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZm9ybWF0VmFsdWUobm9kZS52YWx1ZS5uZXcsIGxldmVsKTtcbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gZm9ybWF0VmFsdWUobm9kZS52YWx1ZS5vbGQsIGxldmVsKTtcbiAgICAgIGNvbnN0IGlkZW50ID0gJyAgICAnLnJlcGVhdChsZXZlbCk7XG4gICAgICByZXR1cm4gYCAgKyAke25vZGUua2V5fTogJHtuZXdWYWx1ZX1cXG4ke2lkZW50fSAgLSAke25vZGUua2V5fTogJHtvbGRWYWx1ZX1gO1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0eXBlOiAnYWRkZWQnLFxuICAgIGZvcm1hdDogKG5vZGUsIGxldmVsKSA9PiBgICArICR7bm9kZS5rZXl9OiAke2Zvcm1hdFZhbHVlKG5vZGUudmFsdWUsIGxldmVsKX1gLFxuICB9LFxuICB7XG4gICAgdHlwZTogJ2RlbGV0ZWQnLFxuICAgIGZvcm1hdDogKG5vZGUsIGxldmVsKSA9PiBgICAtICR7bm9kZS5rZXl9OiAke2Zvcm1hdFZhbHVlKG5vZGUudmFsdWUsIGxldmVsKX1gLFxuICB9LFxuICB7XG4gICAgdHlwZTogJ3VuY2hhbmdlZCcsXG4gICAgZm9ybWF0OiAobm9kZSwgbGV2ZWwpID0+IGAgICAgJHtub2RlLmtleX06ICR7Zm9ybWF0VmFsdWUobm9kZS52YWx1ZSwgbGV2ZWwpfWAsXG4gIH0sXG5dO1xuXG5jb25zdCBmb3JtYXRBc3QgPSAoYXN0LCBsZXZlbCA9IDApID0+IHtcbiAgY29uc3QgbGluZXMgPSBhc3QubWFwKChub2RlKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IF8uZmluZChub2RlVHlwZXMsIGl0ZW0gPT4gaXRlbS50eXBlID09PSBub2RlLnR5cGUpO1xuICAgIHJldHVybiBmb3JtYXQobm9kZSwgbGV2ZWwsIGZvcm1hdEFzdCk7XG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXRMaW5lcyhsaW5lcywgbGV2ZWwpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0QXN0O1xuIl19