3 const _ = require("lodash");
4 const chalk = require("chalk");
5 const stringFormatter = require("./stringFormatter");
7 module.exports = function(results) {
8 let output = stringFormatter(results);
14 const sourceWord = results.length > 1 ? "sources" : "source";
15 const ignoredCount = results.filter(result => result.ignored).length;
16 const checkedDisplay = ignoredCount
17 ? `${results.length - ignoredCount} of ${results.length}`
19 output += chalk.underline(`${checkedDisplay} ${sourceWord} checked\n`);
20 results.forEach(result => {
21 let formatting = "green";
24 } else if (result.warnings.length) {
25 formatting = "yellow";
26 } else if (result.ignored) {
29 let sourceText = `${result.source}`;
31 sourceText += " (ignored)";
33 output += _.get(chalk, formatting)(` ${sourceText}\n`);
36 const warnings = _.flatten(results.map(r => r.warnings));
37 const warningsBySeverity = _.groupBy(warnings, "severity");
38 const problemWord = warnings.length === 1 ? "problem" : "problems";
40 output += chalk.underline(`\n${warnings.length} ${problemWord} found\n`);
42 _.forOwn(warningsBySeverity, (warningList, severityLevel) => {
43 const warningsByRule = _.groupBy(warningList, "rule");
44 output += ` severity level "${severityLevel}": ${warningList.length}\n`;
45 _.forOwn(warningsByRule, (list, rule) => {
46 output += chalk.dim(` ${rule}: ${list.length}\n`);