diff --git a/lib/rules.js b/lib/rules.js index 3cfee2e9..20ba2921 100644 --- a/lib/rules.js +++ b/lib/rules.js @@ -4,7 +4,8 @@ var shared = require("./shared"); // Returns the indent for a token function indentFor(token) { - return token.line.length - token.line.trimLeft().length; + var line = token.line.replace(/^[\s>]*(> |>)/, ""); + return line.length - line.trimLeft().length; } // Returns the heading style for a heading token @@ -581,7 +582,7 @@ module.exports = [ blockquoteNesting++; } else if (token.type === "blockquote_close") { blockquoteNesting--; - } else if ((token.type === "inline") && blockquoteNesting > 0) { + } else if ((token.type === "inline") && (blockquoteNesting > 0)) { token.content.split(shared.newLineRe) .forEach(function forLine(line, offset) { if (/^\s/.test(line) || @@ -622,7 +623,7 @@ module.exports = [ if (!list.unordered) { var number = 1; list.items.forEach(function forItem(item) { - var re = new RegExp("^(\\s|> )*" + String(number) + "\\."); + var re = new RegExp("^[\\s>]*" + String(number) + "\\."); if (!re.test(item.line)) { errors.push(item.lineNumber); } @@ -652,8 +653,8 @@ module.exports = [ (allSingle ? ulSingle : ulMulti) : (allSingle ? olSingle : olMulti); list.items.forEach(function forItem(item) { - var match = /^(\s|> )*\S+(\s+)/.exec(item.line); - if (!match || (match[2].length !== expectedSpaces)) { + var match = /^[\s>]*\S+(\s+)/.exec(item.line); + if (!match || (match[1].length !== expectedSpaces)) { errors.push(item.lineNumber); } }); diff --git a/test/blockquote-spaces-nested.md b/test/blockquote-spaces-nested.md index 3517bf9b..3d4a1ab9 100644 --- a/test/blockquote-spaces-nested.md +++ b/test/blockquote-spaces-nested.md @@ -5,3 +5,55 @@ > > B {MD027} > > C {MD027} + +Text + +> A {MD027} +> +> > B {MD027} +> > +> > > C {MD027} +> > +> > D {MD027} +> +> E {MD027} + +Text + +> A {MD027} +> +>> B {MD027} +>> +>>> C {MD027} +>> +>> D {MD027} +> +> E {MD027} + +Text + +> > Text {MD027} + +Text + + > > Text {MD027} + +Text + + > > Text {MD027} + +Text + +> > Text {MD027} + +Text + +> > > Text {MD027} + +Text + +> > > > Text {MD027} + +Text + +>> >> Text {MD027} diff --git a/test/lists-in-blockquote.md b/test/lists-in-blockquote.md new file mode 100644 index 00000000..f34d9864 --- /dev/null +++ b/test/lists-in-blockquote.md @@ -0,0 +1,64 @@ +# Lists in blockquote + +> 1. The simplest ordered list in blockquote + +Text + +> + The simplest unordered list in blockquote + +Text + +>1. Item + +Text + +>+ Item + +Text + +>1. Item {MD030} + +Text + +>+ Item {MD030} + +Text + +> 1. Item +> 1. Item {MD027} + +Text + +> - Item +> - Item {MD027} + +Text + + > 1. Item + > 1. Item {MD027} + > 1. Item {MD027} {MD030} + +Text + + > * Item + > * Item {MD027} + > * Item {MD027} {MD030} + > * Item {MD027} {MD005} + > * Item {MD027} {MD005} + +Text + + > Text + > > - Item + > > - Item {MD027} + > > - Item + > > > - Item + > > > - Item {MD027} + > > > - Item {MD027} + +Text + +>* Item +> * Item +>>* Item +>> * Item diff --git a/test/ordered-list-in-blockquote.md b/test/ordered-list-in-blockquote.md deleted file mode 100644 index 3818e108..00000000 --- a/test/ordered-list-in-blockquote.md +++ /dev/null @@ -1,11 +0,0 @@ -# Ordered list in blockquote - -> 1. The simplest ordered list in blockquote - -1. ol - - > 1. ol-li-blockquote-ol-li - > 1. ol-li-blockquote-ol-li-ol-li {MD027} - -> 1. blockquote-ol-li -> 1. blockquote-ol-li-ol-li {MD027}