UNPKG

markuplint

Version:

A Linter for All Markup Languages.

60 lines (59 loc) 2.94 kB
"use strict"; 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;