UNPKG

csvutil

Version:
260 lines (214 loc) 10.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); exports.getLogger = getLogger; var _ramda = require('ramda'); var _ramda2 = _interopRequireDefault(_ramda); var _safe = require('colors/safe'); var _safe2 = _interopRequireDefault(_safe); var _pad = require('pad'); var _pad2 = _interopRequireDefault(_pad); var _tcombValidation = require('tcomb-validation'); var _tcombValidation2 = _interopRequireDefault(_tcombValidation); var _config = require('./config'); var _logger_helpers = require('./logger_helpers'); var _string_helpers = require('./string_helpers'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Csv function escapeCsvValue(value) { return value.indexOf(',') === -1 ? value : '"' + value + '"'; } function logCsvValues(args, values) { var bufferFunction = args.bufferFunction; var escapedValues = _ramda2.default.map(escapeCsvValue, values); var t = _ramda2.default.join(',', escapedValues); var components = [{ text: t, color: _logger_helpers.Color.GREY }]; if (bufferFunction) { bufferFunction((0, _logger_helpers.logComponentsToString)(components)); } else { (0, _logger_helpers.logComponents)(components); } } function logCsvHeader(args) { var showRowIndex = args.showRowIndex; var rowA = args.rowA; logCsvValues(args, showRowIndex ? _ramda2.default.prepend('row', rowA) : rowA); } function logCsvRowValues(args) { var showRowIndex = args.showRowIndex; var rowIndex = args.rowIndex; var rowA = args.rowA; logCsvValues(args, showRowIndex ? _ramda2.default.prepend(rowIndex, rowA) : rowA); } function logCsvRowDiff(args) { var rowA = args.rowA; var rowB = args.rowB; var rowIndex = args.rowIndex; var showRowIndex = args.showRowIndex; var bufferFunction = args.bufferFunction; var reduceWithIndex = _ramda2.default.addIndex(_ramda2.default.reduce); _ramda2.default.pipe(_ramda2.default.zip(rowA), reduceWithIndex(function (accum, pair, index) { var _pair = _slicedToArray(pair, 2); var a = _pair[0]; var b = _pair[1]; var c = _ramda2.default.equals(a, b) ? [] : [{ text: escapeCsvValue(b), color: _logger_helpers.Color.RED }]; if (index < rowA.length - 1) c.push({ text: ',', color: _logger_helpers.Color.GREY }); return _ramda2.default.concat(accum, c); }, []), showRowIndex ? _ramda2.default.prepend({ text: rowIndex + ',', color: _logger_helpers.Color.GREY }) : _ramda2.default.identity, function (components) { if (bufferFunction) { bufferFunction((0, _logger_helpers.logComponentsToString)(components)); } else { (0, _logger_helpers.logComponents)(components); } })(rowB); } // Pretty function logPrettyRowDiff(args) { var width = args.width; var full = (0, _string_helpers.padOrTruncatePretty)(width); var half = (0, _string_helpers.padOrTruncatePretty)(width / 2); var equal = function equal(a, b) { return [{ text: ' | ', color: _logger_helpers.Color.GREY }, { text: full(a), color: _logger_helpers.Color.GREY }]; }; var notEqual = function notEqual(a, b) { return [{ text: ' | ', color: _logger_helpers.Color.GREY }, { text: half(a), color: _logger_helpers.Color.GREEN }, { text: half(b), color: _logger_helpers.Color.RED }]; }; logFormattedRowDiff(args, equal, notEqual, '', ''); } function logPrettySummary(summary) { var differentRows = summary.differentRows; var processedRows = summary.processedRows; var fileA = summary.fileA; var fileB = summary.fileB; var bufferFunction = summary.bufferFunction; if (bufferFunction) { return; } (0, _logger_helpers.logComponents)([{ text: ' ', color: _logger_helpers.Color.GREY }]); (0, _logger_helpers.logComponents)([{ text: 'found', color: _logger_helpers.Color.GREY }, { text: ' ' + differentRows + ' ', color: differentRows ? _logger_helpers.Color.RED : _logger_helpers.Color.GREEN }, { text: 'different rows between ', color: _logger_helpers.Color.GREY }, { text: '' + fileA, color: _logger_helpers.Color.GREEN }, { text: ' and ', color: _logger_helpers.Color.GREY }, { text: '' + fileB, color: _logger_helpers.Color.RED }, { text: ' (' + processedRows + ' processed)', color: _logger_helpers.Color.GREY }]); } function logPrettyHeader(args) { var rowA = args.rowA; var showRowIndex = args.showRowIndex; var width = args.width; var bufferFunction = args.bufferFunction; var row = showRowIndex ? _ramda2.default.prepend('row', rowA) : rowA; logPrettyRowValues(args); if (bufferFunction) { bufferFunction((0, _logger_helpers.logDividerToString)(width, row, '', '')); } else { (0, _logger_helpers.logDivider)(width, row, '', ''); } } function logPrettyRowValues(args) { var rowA = args.rowA; var showRowIndex = args.showRowIndex; var width = args.width; var bufferFunction = args.bufferFunction; _ramda2.default.pipe(showRowIndex ? _ramda2.default.prepend('row') : _ramda2.default.identity, function (array) { if (bufferFunction) { bufferFunction((0, _logger_helpers.logArrayToString)(width, false, '', '', array)); } else { (0, _logger_helpers.logArray)(width, false, '', '', array); } return array; })(rowA); } // MD function logMarkdownHeader(args) { var rowA = args.rowA; var showRowIndex = args.showRowIndex; var width = args.width; var bufferFunction = args.bufferFunction; var row = showRowIndex ? _ramda2.default.prepend('row', rowA) : rowA; logMarkdownRowValues(args, false); if (bufferFunction) { bufferFunction((0, _logger_helpers.logDividerToString)(width, row, '|', '|')); } else { (0, _logger_helpers.logDivider)(width, row, '|', '|'); } } function logMarkdownRowDiff(args) { var width = args.width; var full = (0, _string_helpers.padOrTruncateMarkdown)(width); var equal = function equal(a, b) { return [{ text: ' | ', color: _logger_helpers.Color.GREY }, { text: full(' '), color: _logger_helpers.Color.GREY }]; }; var notEqual = function notEqual(a, b) { return [{ text: ' | ', color: _logger_helpers.Color.GREY }, { text: full(b), color: _logger_helpers.Color.RED }]; }; logFormattedRowDiff(args, equal, notEqual, '|', ' |'); } function logMarkdownRowValues(args) { var escapeValues = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; var rowA = args.rowA; var showRowIndex = args.showRowIndex; var width = args.width; var bufferFunction = args.bufferFunction; _ramda2.default.pipe(showRowIndex ? _ramda2.default.prepend('row') : _ramda2.default.identity, function (array) { if (bufferFunction) { bufferFunction((0, _logger_helpers.logArrayToString)(width, escapeValues, '|', ' |', array)); } else { (0, _logger_helpers.logArray)(width, escapeValues, '|', ' |', array); } return array; })(rowA); } // Helpers function logFormattedRowDiff(args, equal, notEqual, start, end) { var rowA = args.rowA; var rowB = args.rowB; var width = args.width; var rowIndex = args.rowIndex; var showRowIndex = args.showRowIndex; var bufferFunction = args.bufferFunction; var full = (0, _string_helpers.padOrTruncatePretty)(width); _ramda2.default.pipe(_ramda2.default.zip(rowA), _ramda2.default.reduce(function (accum, pair) { var _pair2 = _slicedToArray(pair, 2); var a = _pair2[0]; var b = _pair2[1]; var c = _ramda2.default.equals(a, b) ? equal(a, b) : notEqual(a, b); return _ramda2.default.concat(accum, c); }, []), showRowIndex ? _ramda2.default.prepend({ text: ' ' + full(rowIndex), color: _logger_helpers.Color.GREY }) : _ramda2.default.identity, _ramda2.default.prepend({ text: start, color: _logger_helpers.Color.GREY }), _ramda2.default.append({ text: end, color: _logger_helpers.Color.GREY }), function (components) { if (bufferFunction) { bufferFunction((0, _logger_helpers.logComponentsToString)(components)); } else { (0, _logger_helpers.logComponents)(components); } })(rowB); } function getLogger(format) { switch (format) { case _config.OutputFormat.CSV: return { logHeader: logCsvHeader, logDiff: logCsvRowDiff, logValues: logCsvRowValues, logSummary: _ramda2.default.T }; case _config.OutputFormat.PRETTY: return { logHeader: logPrettyHeader, logDiff: logPrettyRowDiff, logValues: logPrettyRowValues, logSummary: logPrettySummary }; case _config.OutputFormat.MD: return { logHeader: logMarkdownHeader, logDiff: logMarkdownRowDiff, logValues: logMarkdownRowValues, logSummary: _ramda2.default.T }; case _config.OutputFormat.NONE: default: return { logHeader: _ramda2.default.T, logDiff: _ramda2.default.T, logValues: _ramda2.default.T, logSummary: _ramda2.default.T }; } }