Reimplement MD027/no-multiple-space-blockquote using micromark tokens.

This commit is contained in:
David Anson 2024-02-25 15:06:28 -08:00
parent a2997f1595
commit 730ae9a96f
11 changed files with 248 additions and 167 deletions

View file

@ -1619,7 +1619,7 @@ module.exports = {
getHeadingLevel, getHeadingLevel,
getHtmlTagInfo, getHtmlTagInfo,
getMicromarkEvents, getMicromarkEvents,
getSiblingLists: getSiblingTokens, getSiblingTokens,
getTokenParentOfType, getTokenParentOfType,
getTokenTextByType, getTokenTextByType,
inHtmlFlow, inHtmlFlow,
@ -4543,54 +4543,35 @@ module.exports = {
const { addErrorContext, newLineRe } = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"); const { addErrorContext } = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js");
const { getSiblingTokens } = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs");
const spaceAfterBlockQuoteRe = /^((?:\s*>)+)(\s{2,})\S/;
module.exports = { module.exports = {
"names": [ "MD027", "no-multiple-space-blockquote" ], "names": ["MD027", "no-multiple-space-blockquote"],
"description": "Multiple spaces after blockquote symbol", "description": "Multiple spaces after blockquote symbol",
"tags": [ "blockquote", "whitespace", "indentation" ], "tags": ["blockquote", "whitespace", "indentation"],
"function": function MD027(params, onError) { "function": function MD027(params, onError) {
let blockquoteNesting = 0; for (const siblings of getSiblingTokens(params.parsers.micromark.tokens)) {
let listItemNesting = 0; let previousType = null;
for (const token of params.parsers.markdownit.tokens) { for (const token of siblings) {
const { content, lineNumber, type } = token; const { type } = token;
if (type === "blockquote_open") { if ((type === "linePrefix") && (previousType === "blockQuotePrefix")) {
blockquoteNesting++; const { endColumn, startColumn, startLine, text } = token;
} else if (type === "blockquote_close") { const line = params.lines[startLine - 1];
blockquoteNesting--;
} else if (type === "list_item_open") {
listItemNesting++;
} else if (type === "list_item_close") {
listItemNesting--;
} else if ((type === "inline") && blockquoteNesting) {
const lineCount = content.split(newLineRe).length;
for (let i = 0; i < lineCount; i++) {
const line = params.lines[lineNumber + i - 1];
const match = line.match(spaceAfterBlockQuoteRe);
if (match) {
const [
fullMatch,
{ "length": blockquoteLength },
{ "length": spaceLength }
] = match;
if (!listItemNesting || (fullMatch[fullMatch.length - 1] === ">")) {
addErrorContext( addErrorContext(
onError, onError,
lineNumber + i, startLine,
line, line,
null, null,
null, null,
[ 1, fullMatch.length ], [ 1, Math.min(endColumn, line.length) ],
{ {
"editColumn": blockquoteLength + 1, "editColumn": startColumn,
"deleteCount": spaceLength - 1 "deleteCount": text.length
} }
); );
} }
} previousType = type;
}
} }
} }
} }
@ -4611,14 +4592,14 @@ module.exports = {
const { addError } = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"); const { addError } = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js");
const { getSiblingLists } = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"); const { getSiblingTokens } = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs");
module.exports = { module.exports = {
"names": [ "MD028", "no-blanks-blockquote" ], "names": [ "MD028", "no-blanks-blockquote" ],
"description": "Blank line inside blockquote", "description": "Blank line inside blockquote",
"tags": [ "blockquote", "whitespace" ], "tags": [ "blockquote", "whitespace" ],
"function": function MD028(params, onError) { "function": function MD028(params, onError) {
for (const siblings of getSiblingLists(params.parsers.micromark.tokens)) { for (const siblings of getSiblingTokens(params.parsers.micromark.tokens)) {
let errorLineNumbers = null; let errorLineNumbers = null;
for (const sibling of siblings) { for (const sibling of siblings) {
switch (sibling.type) { switch (sibling.type) {

View file

@ -441,7 +441,7 @@ module.exports = {
getHeadingLevel, getHeadingLevel,
getHtmlTagInfo, getHtmlTagInfo,
getMicromarkEvents, getMicromarkEvents,
getSiblingLists: getSiblingTokens, getSiblingTokens,
getTokenParentOfType, getTokenParentOfType,
getTokenTextByType, getTokenTextByType,
inHtmlFlow, inHtmlFlow,

View file

@ -2,54 +2,35 @@
"use strict"; "use strict";
const { addErrorContext, newLineRe } = require("../helpers"); const { addErrorContext } = require("../helpers");
const { getSiblingTokens } = require("../helpers/micromark.cjs");
const spaceAfterBlockQuoteRe = /^((?:\s*>)+)(\s{2,})\S/;
module.exports = { module.exports = {
"names": [ "MD027", "no-multiple-space-blockquote" ], "names": ["MD027", "no-multiple-space-blockquote"],
"description": "Multiple spaces after blockquote symbol", "description": "Multiple spaces after blockquote symbol",
"tags": [ "blockquote", "whitespace", "indentation" ], "tags": ["blockquote", "whitespace", "indentation"],
"function": function MD027(params, onError) { "function": function MD027(params, onError) {
let blockquoteNesting = 0; for (const siblings of getSiblingTokens(params.parsers.micromark.tokens)) {
let listItemNesting = 0; let previousType = null;
for (const token of params.parsers.markdownit.tokens) { for (const token of siblings) {
const { content, lineNumber, type } = token; const { type } = token;
if (type === "blockquote_open") { if ((type === "linePrefix") && (previousType === "blockQuotePrefix")) {
blockquoteNesting++; const { endColumn, startColumn, startLine, text } = token;
} else if (type === "blockquote_close") { const line = params.lines[startLine - 1];
blockquoteNesting--;
} else if (type === "list_item_open") {
listItemNesting++;
} else if (type === "list_item_close") {
listItemNesting--;
} else if ((type === "inline") && blockquoteNesting) {
const lineCount = content.split(newLineRe).length;
for (let i = 0; i < lineCount; i++) {
const line = params.lines[lineNumber + i - 1];
const match = line.match(spaceAfterBlockQuoteRe);
if (match) {
const [
fullMatch,
{ "length": blockquoteLength },
{ "length": spaceLength }
] = match;
if (!listItemNesting || (fullMatch[fullMatch.length - 1] === ">")) {
addErrorContext( addErrorContext(
onError, onError,
lineNumber + i, startLine,
line, line,
null, null,
null, null,
[ 1, fullMatch.length ], [ 1, Math.min(endColumn, line.length) ],
{ {
"editColumn": blockquoteLength + 1, "editColumn": startColumn,
"deleteCount": spaceLength - 1 "deleteCount": text.length
} }
); );
} }
} previousType = type;
}
} }
} }
} }

View file

@ -3,14 +3,14 @@
"use strict"; "use strict";
const { addError } = require("../helpers"); const { addError } = require("../helpers");
const { getSiblingLists } = require("../helpers/micromark.cjs"); const { getSiblingTokens } = require("../helpers/micromark.cjs");
module.exports = { module.exports = {
"names": [ "MD028", "no-blanks-blockquote" ], "names": [ "MD028", "no-blanks-blockquote" ],
"description": "Blank line inside blockquote", "description": "Blank line inside blockquote",
"tags": [ "blockquote", "whitespace" ], "tags": [ "blockquote", "whitespace" ],
"function": function MD028(params, onError) { "function": function MD028(params, onError) {
for (const siblings of getSiblingLists(params.parsers.micromark.tokens)) { for (const siblings of getSiblingTokens(params.parsers.micromark.tokens)) {
let errorLineNumbers = null; let errorLineNumbers = null;
for (const sibling of siblings) { for (const sibling of siblings) {
switch (sibling.type) { switch (sibling.type) {

View file

@ -30,7 +30,7 @@ Text
- Item - Item
- Item - Item
item item
> ## Quoted indented sub-heading in list {MD022} {MD023} > ## Quoted indented sub-heading in list {MD022} {MD023} {MD027}
- Item - Item
Text Text

View file

@ -39,3 +39,10 @@ Text
Text Text
> Text {MD027} > Text {MD027}
Test nothing in the blockquote:
<!-- markdownlint-disable no-trailing-spaces -->
>
{MD027:-1}

View file

@ -65,7 +65,7 @@ Text
> * Item {MD004} > * Item {MD004}
> * Item {MD004} {MD030} > * Item {MD004} {MD030}
> * Item {MD004} {MD005} {MD007} > * Item {MD004} {MD005} {MD007}
> * Item {MD004} {MD005} {MD007} > * Item {MD004} {MD005} {MD007} {MD027}
> * Item {MD004} > * Item {MD004}
> * Item {MD004} > * Item {MD004}
> * Item {MD004} > * Item {MD004}
@ -182,7 +182,7 @@ Text
Text Text
> + list in blockquote > + list in blockquote
> + list in blockquote {MD005} {MD007} > + list in blockquote {MD005} {MD007} {MD027}
> + list in blockquote > + list in blockquote
> + sublist in blockquote > + sublist in blockquote
> + sublist in blockquote {MD005} {MD007} > + sublist in blockquote {MD005} {MD007}

View file

@ -8,4 +8,52 @@ Generated by [AVA](https://avajs.dev).
> Expected linting violations > Expected linting violations
'' `test-repos/dotnet-docs/docs/core/compatibility/code-analysis/5.0/ca1416-platform-compatibility-analyzer.md: 43: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`xml"]␊
test-repos/dotnet-docs/docs/core/compatibility/code-analysis/5.0/ca1416-platform-compatibility-analyzer.md: 44: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > <ItemGroup>"]␊
test-repos/dotnet-docs/docs/core/compatibility/code-analysis/5.0/ca1416-platform-compatibility-analyzer.md: 45: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > <SupportedPlatform Incl..."]
test-repos/dotnet-docs/docs/core/compatibility/code-analysis/5.0/ca1416-platform-compatibility-analyzer.md: 46: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > </ItemGroup>"]␊
test-repos/dotnet-docs/docs/core/install/templates.md: 222: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > Determining projects t..."]␊
test-repos/dotnet-docs/docs/core/install/templates.md: 223: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > Restore completed in 1..."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 174: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`cpp"]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 175: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > cl /clr:pure /LN String..."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 176: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > cl /clr:pure Client.cpp..."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 179: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`csharp"]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 180: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > csc /t:module Stringer...."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 181: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > csc Client.cs /addmodul..."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 184: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`vb"]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 185: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > vbc /t:module Stringer...."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 186: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > vbc Client.vb /addmodul..."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 191: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`cpp"]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 192: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > cl /clr:pure /LN String..."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 193: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > cl /clr:pure Client.cpp..."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 196: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`csharp"]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 197: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > csc /out:Client.exe Cli..."]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 200: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`vb"]␊
test-repos/dotnet-docs/docs/framework/app-domains/build-multifile-assembly.md: 201: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > vbc /out:Client.exe Cli..."]␊
test-repos/dotnet-docs/docs/framework/data/adonet/sql/linq/how-to-map-database-relationships.md: 32: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > Objects in [!INCLUDE[vb..."]␊
test-repos/dotnet-docs/docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md: 47: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > Adding a non-SOAP endpo..."]␊
test-repos/dotnet-docs/docs/framework/wcf/privacy-information.md: 166: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > "]␊
test-repos/dotnet-docs/docs/framework/wcf/privacy-information.md: 202: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > "]␊
test-repos/dotnet-docs/docs/framework/wcf/privacy-information.md: 219: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > "]␊
test-repos/dotnet-docs/docs/framework/wcf/privacy-information.md: 226: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > "]␊
test-repos/dotnet-docs/docs/fundamentals/code-analysis/quality-rules/ca1416.md: 107: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`xml"]␊
test-repos/dotnet-docs/docs/fundamentals/code-analysis/quality-rules/ca1416.md: 108: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > <ItemGroup>"]␊
test-repos/dotnet-docs/docs/fundamentals/code-analysis/quality-rules/ca1416.md: 109: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > <SupportedPlatform In..."]
test-repos/dotnet-docs/docs/fundamentals/code-analysis/quality-rules/ca1416.md: 110: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > </ItemGroup>"]␊
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/includes/csharp-interactive-with-utc-note.md: 4: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: "> "]␊
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/system-invalidoperationexception.md: 184: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > Calling the <xref:Syste..."]
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/system-reflection-emit-dynamicmethod.md: 19: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > When you specify the mo..."]␊
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/system-single.md: 103: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > <xref:System.Single.Eps..."]
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/system-text-stringbuilder.md: 186: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > If you adopt this appro..."]␊
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/system-threading-readerwriterlockslim.md: 36: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > Blocking new readers wh..."]␊
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/system-type-gettype.md: 38: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > Using methods from unkn..."]␊
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/system-typeinitializationexception.md: 97: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > In this example, a <xref..."]
test-repos/dotnet-docs/docs/fundamentals/runtime-libraries/system-version.md: 79: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > The Publish Version of ..."]␊
test-repos/dotnet-docs/docs/machine-learning/tutorials/object-detection-model-builder.md: 277: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > 1. Multiply the top a..."]␊
test-repos/dotnet-docs/docs/machine-learning/tutorials/object-detection-model-builder.md: 278: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > 1. Divide the top and..."]␊
test-repos/dotnet-docs/docs/machine-learning/tutorials/object-detection-model-builder.md: 280: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > For example, given th..."]␊
test-repos/dotnet-docs/docs/machine-learning/tutorials/object-detection-model-builder.md: 282: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > \`\`\`csharp"]␊
test-repos/dotnet-docs/docs/machine-learning/tutorials/object-detection-model-builder.md: 283: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > var top = originalIma..."]␊
test-repos/dotnet-docs/docs/machine-learning/tutorials/object-detection-model-builder.md: 284: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > var bottom = original..."]␊
test-repos/dotnet-docs/docs/machine-learning/tutorials/object-detection-model-builder.md: 285: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > var left = originalIm..."]␊
test-repos/dotnet-docs/docs/machine-learning/tutorials/object-detection-model-builder.md: 286: MD027/no-multiple-space-blockquote Multiple spaces after blockquote symbol [Context: " > var right = originalI..."]`

View file

@ -694,7 +694,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 8, lineNumber: 8,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -713,7 +713,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 15, lineNumber: 15,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -732,7 +732,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 6, editColumn: 7,
}, },
lineNumber: 17, lineNumber: 17,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -751,7 +751,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 19, lineNumber: 19,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5087,7 +5087,7 @@ Generated by [AVA](https://avajs.dev).
], ],
}, },
{ {
errorContext: '> ## Quoted indented sub-heading in list {MD022} {MD023}', errorContext: '> ## Quoted indented sub-heading in list {MD022} {MD023} {MD027}',
errorDetail: 'Expected: 1; Actual: 0; Above', errorDetail: 'Expected: 1; Actual: 0; Above',
errorRange: null, errorRange: null,
fixInfo: { fixInfo: {
@ -5103,7 +5103,7 @@ Generated by [AVA](https://avajs.dev).
], ],
}, },
{ {
errorContext: '> ## Quoted indented sub-heading in list {MD022} {MD023}', errorContext: '> ## Quoted indented sub-heading in list {MD022} {MD023} {MD027}',
errorDetail: 'Expected: 1; Actual: 0; Below', errorDetail: 'Expected: 1; Actual: 0; Below',
errorRange: null, errorRange: null,
fixInfo: { fixInfo: {
@ -5387,7 +5387,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 17, lineNumber: 17,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5397,6 +5397,25 @@ Generated by [AVA](https://avajs.dev).
'no-multiple-space-blockquote', 'no-multiple-space-blockquote',
], ],
}, },
{
errorContext: ' > ## Quoted indented sub-he...',
errorDetail: null,
errorRange: [
1,
6,
],
fixInfo: {
deleteCount: 1,
editColumn: 5,
},
lineNumber: 33,
ruleDescription: 'Multiple spaces after blockquote symbol',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md027.md',
ruleNames: [
'MD027',
'no-multiple-space-blockquote',
],
},
], ],
fixed: `# Heading␊ fixed: `# Heading␊
@ -5414,7 +5433,7 @@ Generated by [AVA](https://avajs.dev).
Text␊ Text␊
># Quoted indented sub-heading {MD023} {MD027}␊ > ## Quoted indented sub-heading {MD023} {MD027}␊
Text␊ Text␊
@ -5437,7 +5456,7 @@ Generated by [AVA](https://avajs.dev).
- Item␊ - Item␊
item␊ item␊
># Quoted indented sub-heading in list {MD022} {MD023}␊ > ## Quoted indented sub-heading in list {MD022} {MD023} {MD027}
- Item␊ - Item␊
@ -5508,7 +5527,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 3, lineNumber: 3,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5527,7 +5546,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 5, lineNumber: 5,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5546,7 +5565,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 7, lineNumber: 7,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5565,7 +5584,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 11, lineNumber: 11,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5584,7 +5603,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 13, lineNumber: 13,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5603,7 +5622,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 6, editColumn: 7,
}, },
lineNumber: 15, lineNumber: 15,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5622,7 +5641,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 17, lineNumber: 17,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5641,7 +5660,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 19, lineNumber: 19,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5660,7 +5679,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 23, lineNumber: 23,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5679,7 +5698,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 3, editColumn: 4,
}, },
lineNumber: 25, lineNumber: 25,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5698,7 +5717,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 27, lineNumber: 27,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5717,7 +5736,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 3, editColumn: 4,
}, },
lineNumber: 29, lineNumber: 29,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5736,7 +5755,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 31, lineNumber: 31,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5755,7 +5774,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 35, lineNumber: 35,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5774,7 +5793,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 5, editColumn: 6,
}, },
lineNumber: 39, lineNumber: 39,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5793,7 +5812,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 6, editColumn: 7,
}, },
lineNumber: 43, lineNumber: 43,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5812,7 +5831,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 47, lineNumber: 47,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5831,7 +5850,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 51, lineNumber: 51,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5850,7 +5869,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 55, lineNumber: 55,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5869,7 +5888,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 3, editColumn: 4,
}, },
lineNumber: 59, lineNumber: 59,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5888,7 +5907,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 5, editColumn: 6,
}, },
lineNumber: 63, lineNumber: 63,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5907,7 +5926,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 6, editColumn: 7,
}, },
lineNumber: 67, lineNumber: 67,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5926,7 +5945,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 7, editColumn: 8,
}, },
lineNumber: 71, lineNumber: 71,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -5945,7 +5964,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 3, editColumn: 4,
}, },
lineNumber: 75, lineNumber: 75,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6190,7 +6209,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 6, lineNumber: 6,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6209,7 +6228,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 7, lineNumber: 7,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6228,7 +6247,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 14, lineNumber: 14,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6247,7 +6266,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 15, lineNumber: 15,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6266,7 +6285,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 2, deleteCount: 2,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 16, lineNumber: 16,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6285,7 +6304,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 2, deleteCount: 2,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 17, lineNumber: 17,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6304,7 +6323,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 27, lineNumber: 27,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6323,7 +6342,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 28, lineNumber: 28,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6342,7 +6361,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 3, editColumn: 4,
}, },
lineNumber: 33, lineNumber: 33,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6361,7 +6380,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 37, lineNumber: 37,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6380,7 +6399,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 5, editColumn: 6,
}, },
lineNumber: 41, lineNumber: 41,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -6390,6 +6409,25 @@ Generated by [AVA](https://avajs.dev).
'no-multiple-space-blockquote', 'no-multiple-space-blockquote',
], ],
}, },
{
errorContext: '> ',
errorDetail: null,
errorRange: [
1,
3,
],
fixInfo: {
deleteCount: 1,
editColumn: 3,
},
lineNumber: 47,
ruleDescription: 'Multiple spaces after blockquote symbol',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md027.md',
ruleNames: [
'MD027',
'no-multiple-space-blockquote',
],
},
], ],
fixed: `# blockquote_spaces␊ fixed: `# blockquote_spaces␊
@ -6432,6 +6470,13 @@ Generated by [AVA](https://avajs.dev).
Text␊ Text␊
> Text {MD027}␊ > Text {MD027}␊
Test nothing in the blockquote:␊
<!-- markdownlint-disable no-trailing-spaces -->
> ␊
{MD027:-1}␊
`, `,
} }
@ -6819,7 +6864,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 2, editColumn: 3,
}, },
lineNumber: 42, lineNumber: 42,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -33578,6 +33623,25 @@ Generated by [AVA](https://avajs.dev).
'ul-indent', 'ul-indent',
], ],
}, },
{
errorContext: ' > * Item {MD004} {MD005} {...',
errorDetail: null,
errorRange: [
1,
7,
],
fixInfo: {
deleteCount: 1,
editColumn: 6,
},
lineNumber: 68,
ruleDescription: 'Multiple spaces after blockquote symbol',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md027.md',
ruleNames: [
'MD027',
'no-multiple-space-blockquote',
],
},
{ {
errorContext: ' > > - Item {MD004} {MD005} ...', errorContext: ' > > - Item {MD004} {MD005} ...',
errorDetail: null, errorDetail: null,
@ -33587,7 +33651,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 86, lineNumber: 86,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -33606,7 +33670,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 6, editColumn: 7,
}, },
lineNumber: 90, lineNumber: 90,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -33625,7 +33689,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 91, lineNumber: 91,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -33644,7 +33708,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 97, lineNumber: 97,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -33663,7 +33727,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 6, editColumn: 7,
}, },
lineNumber: 100, lineNumber: 100,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -33682,7 +33746,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 1, deleteCount: 1,
editColumn: 4, editColumn: 5,
}, },
lineNumber: 101, lineNumber: 101,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',
@ -33692,6 +33756,25 @@ Generated by [AVA](https://avajs.dev).
'no-multiple-space-blockquote', 'no-multiple-space-blockquote',
], ],
}, },
{
errorContext: ' > + list in blockquote {MD0...',
errorDetail: null,
errorRange: [
1,
6,
],
fixInfo: {
deleteCount: 1,
editColumn: 5,
},
lineNumber: 185,
ruleDescription: 'Multiple spaces after blockquote symbol',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md027.md',
ruleNames: [
'MD027',
'no-multiple-space-blockquote',
],
},
{ {
errorContext: null, errorContext: null,
errorDetail: 'Expected: 1; Actual: 2', errorDetail: 'Expected: 1; Actual: 2',
@ -33977,7 +34060,7 @@ Generated by [AVA](https://avajs.dev).
> + Item {MD004}␊ > + Item {MD004}␊
> + Item {MD004} {MD030}␊ > + Item {MD004} {MD030}␊
> + Item {MD004} {MD005} {MD007}␊ > + Item {MD004} {MD005} {MD007}␊
> + Item {MD004} {MD005} {MD007}␊ > + Item {MD004} {MD005} {MD007} {MD027}
> + Item {MD004}␊ > + Item {MD004}␊
> + Item {MD004}␊ > + Item {MD004}␊
> + Item {MD004}␊ > + Item {MD004}␊
@ -34097,7 +34180,7 @@ Generated by [AVA](https://avajs.dev).
Text␊ Text␊
> + list in blockquote␊ > + list in blockquote␊
> + list in blockquote {MD005} {MD007}␊ > + list in blockquote {MD005} {MD007} {MD027}
> + list in blockquote␊ > + list in blockquote␊
> + sublist in blockquote␊ > + sublist in blockquote␊
> + sublist in blockquote {MD005} {MD007}␊ > + sublist in blockquote {MD005} {MD007}␊
@ -54686,26 +54769,7 @@ Generated by [AVA](https://avajs.dev).
], ],
fixInfo: { fixInfo: {
deleteCount: 2, deleteCount: 2,
editColumn: 2, editColumn: 3,
},
lineNumber: 132,
ruleDescription: 'Multiple spaces after blockquote symbol',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md027.md',
ruleNames: [
'MD027',
'no-multiple-space-blockquote',
],
},
{
errorContext: '> {MD055} | {MD027} |',
errorDetail: null,
errorRange: [
1,
5,
],
fixInfo: {
deleteCount: 2,
editColumn: 2,
}, },
lineNumber: 132, lineNumber: 132,
ruleDescription: 'Multiple spaces after blockquote symbol', ruleDescription: 'Multiple spaces after blockquote symbol',