markuplint
Version:
A Linter for All Markup Languages.
60 lines (59 loc) • 2.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.standardReporter = void 0;
const utils_1 = require("./utils");
const cli_color_1 = __importDefault(require("cli-color"));
const loggerError = cli_color_1.default.red;
const loggerWarning = cli_color_1.default.xterm(208);
function standardReporter(data) {
const sizes = {
line: 0,
col: 0,
meg: 0,
};
for (const result of data.results) {
sizes.line = Math.max(sizes.line, result.line.toString(10).length);
sizes.col = Math.max(sizes.col, result.col.toString(10).length);
sizes.meg = Math.max(sizes.meg, utils_1.w(result.message));
}
const out = [];
if (data.results.length) {
const lines = data.sourceCode.split(/\r?\n/g);
for (const result of data.results) {
const prev = lines[result.line - 2] || '';
const line = lines[result.line - 1] || '';
const next = lines[result.line - 0] || '';
const before = line.substring(0, result.col - 1);
const after = line.substring(result.col - 1 + result.raw.length);
const logger = result.severity === 'error' ? loggerError : loggerWarning;
out.push(`<${utils_1.markuplint}> ${logger(`${result.severity}: ${result.message} (${result.ruleId}) ${cli_color_1.default.underline(`${data.filePath}:${result.line}:${result.col}`)}`)}`);
if (result.line - 1 > 0) {
out.push(` ${cli_color_1.default.cyan(utils_1.p(result.line - 1, sizes.col, true))}: ${utils_1.space(prev)}`);
}
out.push(` ${cli_color_1.default.cyan(utils_1.p(result.line, sizes.col, true))}: ${utils_1.space(before)}${cli_color_1.default.bgRed(result.raw)}${utils_1.space(after)}`);
if (!data.color) {
out.push(` ${utils_1.invisibleSpace(before)}${'^'.repeat(result.raw.length)}${utils_1.invisibleSpace(after)}`);
}
out.push(` ${cli_color_1.default.cyan(utils_1.p(result.line + 1, sizes.col, true))}: ${utils_1.space(next)}`);
}
}
else if (!data.problemOnly) {
if (data.verbose) {
out.push(`<${utils_1.markuplint}> ${cli_color_1.default.green('passed')}🎉`);
out.push(` Filepath: ${data.filePath}`);
out.push(` Parser: ${data.parser}`);
out.push(' Config: [');
out.push(` ${data.configSet.files.join('\n ')}`);
out.push(' ]');
// out.push(JSON.stringify(data, null, 2));
}
else {
out.push(`<${utils_1.markuplint}> ${cli_color_1.default.green('passed')} ${cli_color_1.default.underline(data.filePath)}`);
}
}
return out;
}
exports.standardReporter = standardReporter;