123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- 'use strict';
- const util = require('util');
- module.exports = function report(problem) {
- const { ruleName, result, message, messageArgs, line, node, index, endIndex, word } = problem;
- result.stylelint = result.stylelint || {
- ruleSeverities: {},
- customMessages: {},
- ruleMetadata: {},
- };
-
- if (result.stylelint.quiet && result.stylelint.ruleSeverities[ruleName] !== 'error') {
- return;
- }
- const { start } = (node && node.rangeBy({ index, endIndex })) || {};
-
-
- const startLine = line || (start && start.line);
- if (!startLine) {
- throw new Error('You must pass either a node or a line number');
- }
- const { ignoreDisables } = result.stylelint.config || {};
- if (result.stylelint.disabledRanges) {
- const ranges =
- result.stylelint.disabledRanges[ruleName] || result.stylelint.disabledRanges.all || [];
- for (const range of ranges) {
- if (
-
-
-
- range.start <= startLine &&
- (range.end === undefined || range.end >= startLine) &&
- (!range.rules || range.rules.includes(ruleName))
- ) {
-
-
- const disabledWarnings =
- result.stylelint.disabledWarnings || (result.stylelint.disabledWarnings = []);
- disabledWarnings.push({
- rule: ruleName,
- line: startLine,
- });
- if (!ignoreDisables) {
- return;
- }
- break;
- }
- }
- }
- const severity = result.stylelint.ruleSeverities && result.stylelint.ruleSeverities[ruleName];
- if (!result.stylelint.stylelintError && severity === 'error') {
- result.stylelint.stylelintError = true;
- }
-
- const warningProperties = {
- severity,
- rule: ruleName,
- };
- if (node) {
- warningProperties.node = node;
- }
- if (problem.start) {
- warningProperties.start = problem.start;
- } else if (index) {
- warningProperties.index = index;
- }
- if (problem.end) {
- warningProperties.end = problem.end;
- } else if (endIndex) {
- warningProperties.endIndex = endIndex;
- }
- if (word) {
- warningProperties.word = word;
- }
- const { customMessages } = result.stylelint;
- const warningMessage = buildWarningMessage(
- (customMessages && customMessages[ruleName]) || message,
- messageArgs,
- );
- result.warn(warningMessage, warningProperties);
- };
- function buildWarningMessage(message, messageArgs) {
- const args = messageArgs || [];
- if (typeof message === 'string') {
- return util.format(message, ...args);
- }
- return message(...args);
- }
|