coffeelint-stylish
Version:
Stylish reporter for CoffeeLint
78 lines (65 loc) • 1.99 kB
JavaScript
var StylishReporter, chalk, err_sign, happy_sign, is_win, reporter, table, warn_sign;
chalk = require('chalk');
table = require('text-table');
is_win = process.platform === 'win32';
warn_sign = "" + (is_win ? '' : '⚠');
err_sign = "" + (is_win ? '' : '✖');
happy_sign = "" + (is_win ? '' : '✔');
reporter = function(filename, results) {
var errs, ret, warns;
if (filename == null) {
filename = '';
}
if (results == null) {
results = [];
}
errs = 0;
warns = 0;
ret = '';
if (filename) {
ret = '\n' + chalk.underline(filename) + '\n';
}
ret += table(results.map(function(result) {
var context, level, lineNumber, message;
level = result.level, lineNumber = result.lineNumber, message = result.message, context = result.context;
if (level === 'error') {
errs++;
}
if (level === 'warn') {
warns++;
}
return ['', chalk.gray(level === 'error' ? err_sign : warn_sign), chalk.gray('line ' + lineNumber), chalk.blue(message), chalk.gray(context || '')];
}));
ret += '\n\n';
if (warns > 0) {
ret += chalk.yellow(warn_sign + " " + warns + " warning" + (warns === 1 ? '' : 's'));
if (errs > 0) {
ret += '\n';
}
}
if (errs > 0) {
ret += chalk.red(err_sign + " " + errs + " error" + (errs === 1 ? '' : 's'));
}
if (errs === 0 && warns === 0) {
ret += chalk.green(happy_sign + " No problems");
ret = '\n' + ret.trim();
}
return console.log(ret + '\n');
};
module.exports = StylishReporter = (function() {
StylishReporter.reporter = reporter;
function StylishReporter(error_report) {
this.error_report = error_report;
}
StylishReporter.prototype.publish = function() {
var filename, ref, results, results1;
ref = this.error_report.paths;
results1 = [];
for (filename in ref) {
results = ref[filename];
results1.push(StylishReporter.reporter(filename, results));
}
return results1;
};
return StylishReporter;
})();