1
0
mirror of https://github.com/thangisme/notes.git synced 2024-11-01 04:27:17 -04:00
notes/node_modules/stylelint/lib/formatters/verboseFormatter.js

50 lines
1.6 KiB
JavaScript
Raw Normal View History

2017-03-09 13:16:08 -05:00
"use strict"
const _ = require("lodash")
const chalk = require("chalk")
const stringFormatter = require("./stringFormatter")
module.exports = function (results) {
let output = stringFormatter(results)
if (output === "") {
output = "\n"
}
const sourceWord = results.length > 1 ? "sources" : "source"
const ignoredCount = results.filter(result => result.ignored).length
const checkedDisplay = ignoredCount ? `${results.length - ignoredCount} of ${results.length}` : results.length
output += chalk.underline(`${checkedDisplay} ${sourceWord} checked\n`)
results.forEach(result => {
let formatting = "green"
if (result.errored) {
formatting = "red"
} else if (result.warnings.length) {
formatting = "yellow"
} else if (result.ignored) {
formatting = "dim"
}
let sourceText = `${result.source}`
if (result.ignored) {
sourceText += " (ignored)"
}
output += _.get(chalk, formatting)(` ${sourceText}\n`)
})
const warnings = _.flatten(results.map(r => r.warnings))
const warningsBySeverity = _.groupBy(warnings, "severity")
const problemWord = warnings.length === 1 ? "problem" : "problems"
output += chalk.underline(`\n${warnings.length} ${problemWord} found\n`)
_.forOwn(warningsBySeverity, (warningList, severityLevel) => {
const warningsByRule = _.groupBy(warningList, "rule")
output += ` severity level "${severityLevel}": ${warningList.length}\n`
_.forOwn(warningsByRule, (list, rule) => {
output += chalk.dim(` ${rule}: ${list.length}\n`)
})
})
return output + "\n"
}