Blame view
node_modules/eslint/lib/formatters/stylish.js
2.56 KB
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
/** * @fileoverview Stylish reporter * @author Sindre Sorhus */ "use strict"; const chalk = require("chalk"), table = require("text-table"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ /** * Given a word and a count, append an s if count is not one. * @param {string} word A word in its singular form. * @param {int} count A number controlling whether word should be pluralized. * @returns {string} The original word with an s on the end if count is not one. */ function pluralize(word, count) { return (count === 1 ? word : `${word}s`); } //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ module.exports = function(results) { let output = " ", errors = 0, warnings = 0, summaryColor = "yellow"; results.forEach(result => { const messages = result.messages; if (messages.length === 0) { return; } errors += result.errorCount; warnings += result.warningCount; output += `${chalk.underline(result.filePath)} `; output += `${table( messages.map(message => { let messageType; if (message.fatal || message.severity === 2) { messageType = chalk.red("error"); summaryColor = "red"; } else { messageType = chalk.yellow("warning"); } return [ "", message.line || 0, message.column || 0, messageType, message.message.replace(/\.$/, ""), chalk.dim(message.ruleId || "") ]; }), { align: ["", "r", "l"], stringLength(str) { return chalk.stripColor(str).length; } } ).split(" ").map(el => el.replace(/(\d+)\s+(\d+)/, (m, p1, p2) => chalk.dim(`${p1}:${p2}`))).join(" ")} `; }); const total = errors + warnings; if (total > 0) { output += chalk[summaryColor].bold([ "\u2716 ", total, pluralize(" problem", total), " (", errors, pluralize(" error", errors), ", ", warnings, pluralize(" warning", warnings), ") " ].join("")); } return total > 0 ? output : ""; }; |