lint-filter
Version:
Lint touched code stricter
63 lines (51 loc) • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.preFormatter = preFormatter;
exports.generateStats = generateStats;
exports.formatOutput = formatOutput;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _checkstyle = require('./checkstyle');
var _checkstyle2 = _interopRequireDefault(_checkstyle);
var _text = require('./text');
var _text2 = _interopRequireDefault(_text);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var formatters = {
checkstyle: _checkstyle2.default,
text: _text2.default
};
function preFormatter(data) {
return _lodash2.default.filter(_lodash2.default.map(_lodash2.default.groupBy(data, 'file'), function (value, key) {
if (!_lodash2.default.isEmpty(_lodash2.default.filter(value, 'isInDiff'))) {
return {
filename: key,
messages: _lodash2.default.filter(value, 'isInDiff').map(function (item) {
return _lodash2.default.omit(item, ['isInDiff', 'file']);
})
};
}
return null;
}));
}
function generateStats(data) {
return {
errors: {
total: _lodash2.default.filter(data, { severity: 'error' }).length,
in: _lodash2.default.filter(data, { severity: 'error', isInDiff: true }).length,
out: _lodash2.default.filter(data, { severity: 'error', isInDiff: false }).length
},
warnings: {
total: _lodash2.default.filter(data, { severity: 'warning' }).length,
in: _lodash2.default.filter(data, { severity: 'warning', isInDiff: true }).length,
out: _lodash2.default.filter(data, { severity: 'warning', isInDiff: false }).length
}
};
}
function formatOutput(format, data) {
if (!formatters.hasOwnProperty(format)) {
throw new Error('Formatter with name \'' + format + '\' does not exist.');
}
return formatters[format](preFormatter(data), generateStats(data));
}