diff --git a/demo/markdownlint-browser.js b/demo/markdownlint-browser.js index c2915315..ef973fbe 100644 --- a/demo/markdownlint-browser.js +++ b/demo/markdownlint-browser.js @@ -1350,14 +1350,12 @@ function lintContent(ruleList, name, content, md, config, frontMatter, handleRul // eslint-disable-next-line jsdoc/require-jsdoc function forRule(rule) { // Configure rule - var ruleNameFriendly = rule.names[0]; - var ruleName = ruleNameFriendly.toUpperCase(); + var ruleName = rule.names[0].toUpperCase(); params.config = effectiveConfig[ruleName]; // eslint-disable-next-line jsdoc/require-jsdoc function throwError(property) { throw new Error("Property '" + property + "' of onError parameter is incorrect."); } - var errors = []; // eslint-disable-next-line jsdoc/require-jsdoc function onError(errorInfo) { if (!errorInfo || @@ -1366,6 +1364,10 @@ function lintContent(ruleList, name, content, md, config, frontMatter, handleRul (errorInfo.lineNumber > lines.length)) { throwError("lineNumber"); } + var lineNumber = errorInfo.lineNumber + frontMatterLines.length; + if (!enabledRulesPerLineNumber[lineNumber][ruleName]) { + return; + } if (errorInfo.detail && !helpers.isString(errorInfo.detail)) { throwError("detail"); @@ -1426,11 +1428,15 @@ function lintContent(ruleList, name, content, md, config, frontMatter, handleRul cleanFixInfo.insertText = fixInfo.insertText; } } - errors.push({ - "lineNumber": errorInfo.lineNumber + frontMatterLines.length, - "detail": errorInfo.detail || null, - "context": errorInfo.context || null, - "range": errorInfo.range ? __spreadArray([], errorInfo.range) : null, + results.push({ + lineNumber: lineNumber, + "ruleName": rule.names[0], + "ruleNames": rule.names, + "ruleDescription": rule.description, + "ruleInformation": rule.information ? rule.information.href : null, + "errorDetail": errorInfo.detail || null, + "errorContext": errorInfo.context || null, + "errorRange": errorInfo.range ? __spreadArray([], errorInfo.range) : null, "fixInfo": fixInfo ? cleanFixInfo : null }); } @@ -1449,23 +1455,6 @@ function lintContent(ruleList, name, content, md, config, frontMatter, handleRul else { rule.function(params, onError); } - // Record any errors (significant performance benefit from length check) - if (errors.length > 0) { - var filteredErrors = errors - .filter(function (error) { return (enabledRulesPerLineNumber[error.lineNumber][ruleName]); }) - .map(function (error) { return ({ - "lineNumber": error.lineNumber, - "ruleName": rule.names[0], - "ruleNames": rule.names, - "ruleDescription": rule.description, - "ruleInformation": rule.information ? rule.information.href : null, - "errorDetail": error.detail, - "errorContext": error.context, - "errorRange": error.range, - "fixInfo": error.fixInfo - }); }); - Array.prototype.push.apply(results, filteredErrors); - } } // Run all rules try { diff --git a/lib/markdownlint.js b/lib/markdownlint.js index 7c4554d1..0f841cb8 100644 --- a/lib/markdownlint.js +++ b/lib/markdownlint.js @@ -480,15 +480,13 @@ function lintContent( // eslint-disable-next-line jsdoc/require-jsdoc function forRule(rule) { // Configure rule - const ruleNameFriendly = rule.names[0]; - const ruleName = ruleNameFriendly.toUpperCase(); + const ruleName = rule.names[0].toUpperCase(); params.config = effectiveConfig[ruleName]; // eslint-disable-next-line jsdoc/require-jsdoc function throwError(property) { throw new Error( "Property '" + property + "' of onError parameter is incorrect."); } - const errors = []; // eslint-disable-next-line jsdoc/require-jsdoc function onError(errorInfo) { if (!errorInfo || @@ -497,6 +495,10 @@ function lintContent( (errorInfo.lineNumber > lines.length)) { throwError("lineNumber"); } + const lineNumber = errorInfo.lineNumber + frontMatterLines.length; + if (!enabledRulesPerLineNumber[lineNumber][ruleName]) { + return; + } if (errorInfo.detail && !helpers.isString(errorInfo.detail)) { throwError("detail"); @@ -557,11 +559,15 @@ function lintContent( cleanFixInfo.insertText = fixInfo.insertText; } } - errors.push({ - "lineNumber": errorInfo.lineNumber + frontMatterLines.length, - "detail": errorInfo.detail || null, - "context": errorInfo.context || null, - "range": errorInfo.range ? [ ...errorInfo.range ] : null, + results.push({ + lineNumber, + "ruleName": rule.names[0], + "ruleNames": rule.names, + "ruleDescription": rule.description, + "ruleInformation": rule.information ? rule.information.href : null, + "errorDetail": errorInfo.detail || null, + "errorContext": errorInfo.context || null, + "errorRange": errorInfo.range ? [ ...errorInfo.range ] : null, "fixInfo": fixInfo ? cleanFixInfo : null }); } @@ -578,25 +584,6 @@ function lintContent( } else { rule.function(params, onError); } - // Record any errors (significant performance benefit from length check) - if (errors.length > 0) { - const filteredErrors = errors - .filter((error) => ( - enabledRulesPerLineNumber[error.lineNumber][ruleName] - )) - .map((error) => ({ - "lineNumber": error.lineNumber, - "ruleName": rule.names[0], - "ruleNames": rule.names, - "ruleDescription": rule.description, - "ruleInformation": rule.information ? rule.information.href : null, - "errorDetail": error.detail, - "errorContext": error.context, - "errorRange": error.range, - "fixInfo": error.fixInfo - })); - Array.prototype.push.apply(results, filteredErrors); - } } // Run all rules try {