cl-diff-tool
Version:
command line diff tool
45 lines (37 loc) • 4.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _fp = require('lodash/fp');
var states = {
added: '+',
notChanged: ' ',
removed: '-'
}; /* eslint-disable no-use-before-define */
var getIndent = function getIndent(level) {
if (level === 0) {
return ' ';
}
return ' ' + getIndent(level - 1);
};
var createRow = function createRow(key, value, sign, level) {
var val = (0, _fp.isObject)(value) ? '{' + astToString(value, level + 2) + '\n' + getIndent(level) + ' }' : value;
return '\n' + getIndent(level) + (sign || ' ') + ' ' + key + ': ' + val;
};
var astToString = function astToString(ast) {
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
return ast.map(function (_ref) {
var key = _ref.key,
value = _ref.value,
state = _ref.state,
oldValue = _ref.oldValue;
if (state === 'updated') {
return createRow(key, value, states.added, level) + createRow(key, oldValue, states.removed, level);
}
return createRow(key, value, states[state], level);
}).join('');
};
exports.default = function (ast) {
return '{' + astToString(ast) + '\n}';
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mb3JtYXRzL2RlZmF1bHQuanMiXSwibmFtZXMiOlsic3RhdGVzIiwiYWRkZWQiLCJub3RDaGFuZ2VkIiwicmVtb3ZlZCIsImdldEluZGVudCIsImxldmVsIiwiY3JlYXRlUm93Iiwia2V5IiwidmFsdWUiLCJzaWduIiwidmFsIiwiYXN0VG9TdHJpbmciLCJhc3QiLCJtYXAiLCJzdGF0ZSIsIm9sZFZhbHVlIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O0FBRUEsSUFBTUEsU0FBUztBQUNiQyxTQUFPLEdBRE07QUFFYkMsY0FBWSxHQUZDO0FBR2JDLFdBQVM7QUFISSxDQUFmLEMsQ0FKQTs7QUFVQSxJQUFNQyxZQUFZLFNBQVpBLFNBQVksQ0FBQ0MsS0FBRCxFQUFXO0FBQzNCLE1BQUlBLFVBQVUsQ0FBZCxFQUFpQjtBQUNmLFdBQU8sSUFBUDtBQUNEO0FBQ0QsZ0JBQVlELFVBQVVDLFFBQVEsQ0FBbEIsQ0FBWjtBQUNELENBTEQ7O0FBT0EsSUFBTUMsWUFBWSxTQUFaQSxTQUFZLENBQUNDLEdBQUQsRUFBTUMsS0FBTixFQUFhQyxJQUFiLEVBQW1CSixLQUFuQixFQUE2QjtBQUM3QyxNQUFNSyxNQUFNLGtCQUFTRixLQUFULFVBQXNCRyxZQUFZSCxLQUFaLEVBQW1CSCxRQUFRLENBQTNCLENBQXRCLFVBQXdERCxVQUFVQyxLQUFWLENBQXhELFdBQWdGRyxLQUE1RjtBQUNBLGdCQUFhSixVQUFVQyxLQUFWLENBQWIsSUFBZ0NJLFFBQVEsR0FBeEMsVUFBK0NGLEdBQS9DLFVBQXVERyxHQUF2RDtBQUNELENBSEQ7O0FBS0EsSUFBTUMsY0FBYyxTQUFkQSxXQUFjLENBQUNDLEdBQUQ7QUFBQSxNQUFNUCxLQUFOLHVFQUFjLENBQWQ7QUFBQSxTQUNsQk8sSUFBSUMsR0FBSixDQUFRLGdCQUFxQztBQUFBLFFBQWxDTixHQUFrQyxRQUFsQ0EsR0FBa0M7QUFBQSxRQUE3QkMsS0FBNkIsUUFBN0JBLEtBQTZCO0FBQUEsUUFBdEJNLEtBQXNCLFFBQXRCQSxLQUFzQjtBQUFBLFFBQWZDLFFBQWUsUUFBZkEsUUFBZTs7QUFDM0MsUUFBSUQsVUFBVSxTQUFkLEVBQXlCO0FBQ3ZCLGFBQU9SLFVBQVVDLEdBQVYsRUFBZUMsS0FBZixFQUFzQlIsT0FBT0MsS0FBN0IsRUFBb0NJLEtBQXBDLElBQ0xDLFVBQVVDLEdBQVYsRUFBZVEsUUFBZixFQUF5QmYsT0FBT0csT0FBaEMsRUFBeUNFLEtBQXpDLENBREY7QUFFRDtBQUNELFdBQU9DLFVBQVVDLEdBQVYsRUFBZUMsS0FBZixFQUFzQlIsT0FBT2MsS0FBUCxDQUF0QixFQUFxQ1QsS0FBckMsQ0FBUDtBQUNELEdBTkQsRUFNR1csSUFOSCxDQU1RLEVBTlIsQ0FEa0I7QUFBQSxDQUFwQjs7a0JBU2U7QUFBQSxlQUNUTCxZQUFZQyxHQUFaLENBRFM7QUFBQSxDIiwiZmlsZSI6ImRlZmF1bHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqL1xuXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5cbmNvbnN0IHN0YXRlcyA9IHtcbiAgYWRkZWQ6ICcrJyxcbiAgbm90Q2hhbmdlZDogJyAnLFxuICByZW1vdmVkOiAnLScsXG59O1xuXG5jb25zdCBnZXRJbmRlbnQgPSAobGV2ZWwpID0+IHtcbiAgaWYgKGxldmVsID09PSAwKSB7XG4gICAgcmV0dXJuICcgICc7XG4gIH1cbiAgcmV0dXJuIGAgICR7Z2V0SW5kZW50KGxldmVsIC0gMSl9YDtcbn07XG5cbmNvbnN0IGNyZWF0ZVJvdyA9IChrZXksIHZhbHVlLCBzaWduLCBsZXZlbCkgPT4ge1xuICBjb25zdCB2YWwgPSBpc09iamVjdCh2YWx1ZSkgPyBgeyR7YXN0VG9TdHJpbmcodmFsdWUsIGxldmVsICsgMil9XFxuJHtnZXRJbmRlbnQobGV2ZWwpfSAgfWAgOiB2YWx1ZTtcbiAgcmV0dXJuIChgXFxuJHtnZXRJbmRlbnQobGV2ZWwpfSR7c2lnbiB8fCAnICd9ICR7a2V5fTogJHt2YWx9YCk7XG59O1xuXG5jb25zdCBhc3RUb1N0cmluZyA9IChhc3QsIGxldmVsID0gMCkgPT5cbiAgYXN0Lm1hcCgoeyBrZXksIHZhbHVlLCBzdGF0ZSwgb2xkVmFsdWUgfSkgPT4ge1xuICAgIGlmIChzdGF0ZSA9PT0gJ3VwZGF0ZWQnKSB7XG4gICAgICByZXR1cm4gY3JlYXRlUm93KGtleSwgdmFsdWUsIHN0YXRlcy5hZGRlZCwgbGV2ZWwpICtcbiAgICAgICAgY3JlYXRlUm93KGtleSwgb2xkVmFsdWUsIHN0YXRlcy5yZW1vdmVkLCBsZXZlbCk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVSb3coa2V5LCB2YWx1ZSwgc3RhdGVzW3N0YXRlXSwgbGV2ZWwpO1xuICB9KS5qb2luKCcnKTtcblxuZXhwb3J0IGRlZmF1bHQgYXN0ID0+XG4gIGB7JHthc3RUb1N0cmluZyhhc3QpfVxcbn1gO1xuXG4iXX0=