.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / formatters / verboseFormatter.js
1 "use strict";
2
3 const _ = require("lodash");
4 const chalk = require("chalk");
5 const stringFormatter = require("./stringFormatter");
6
7 module.exports = function(results) {
8   let output = stringFormatter(results);
9
10   if (output === "") {
11     output = "\n";
12   }
13
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}`
18     : results.length;
19   output += chalk.underline(`${checkedDisplay} ${sourceWord} checked\n`);
20   results.forEach(result => {
21     let formatting = "green";
22     if (result.errored) {
23       formatting = "red";
24     } else if (result.warnings.length) {
25       formatting = "yellow";
26     } else if (result.ignored) {
27       formatting = "dim";
28     }
29     let sourceText = `${result.source}`;
30     if (result.ignored) {
31       sourceText += " (ignored)";
32     }
33     output += _.get(chalk, formatting)(` ${sourceText}\n`);
34   });
35
36   const warnings = _.flatten(results.map(r => r.warnings));
37   const warningsBySeverity = _.groupBy(warnings, "severity");
38   const problemWord = warnings.length === 1 ? "problem" : "problems";
39
40   output += chalk.underline(`\n${warnings.length} ${problemWord} found\n`);
41
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`);
47     });
48   });
49
50   return output + "\n";
51 };