Fix bug with gathering list item lines
Instead of swallowing an empty line and then reintroducing it back again in certain cases, collect the list item body in an unaltered form and let the recursive parsing call sort things out. Fixes issue #228.pull/229/head
parent
b8031576aa
commit
fc6236fc55
10
block.go
10
block.go
|
@ -1153,6 +1153,7 @@ gatherlines:
|
|||
// and move on to the next line
|
||||
if p.isEmpty(data[line:i]) > 0 {
|
||||
containsBlankLine = true
|
||||
raw.Write(data[line:i])
|
||||
line = i
|
||||
continue
|
||||
}
|
||||
|
@ -1220,17 +1221,10 @@ gatherlines:
|
|||
|
||||
// a blank line means this should be parsed as a block
|
||||
case containsBlankLine:
|
||||
raw.WriteByte('\n')
|
||||
*flags |= LIST_ITEM_CONTAINS_BLOCK
|
||||
}
|
||||
|
||||
// if this line was preceeded by one or more blanks,
|
||||
// re-introduce the blank into the buffer
|
||||
if containsBlankLine {
|
||||
containsBlankLine = false
|
||||
raw.WriteByte('\n')
|
||||
|
||||
}
|
||||
containsBlankLine = false
|
||||
|
||||
// add the line into the working buffer without prefix
|
||||
raw.Write(data[line+indent : i])
|
||||
|
|
|
@ -702,10 +702,41 @@ func TestUnorderedList(t *testing.T) {
|
|||
|
||||
"* List\n\n * sublist\n\n normal text\n\n * another sublist\n",
|
||||
"<ul>\n<li><p>List</p>\n\n<ul>\n<li>sublist</li>\n</ul>\n\n<p>normal text</p>\n\n<ul>\n<li>another sublist</li>\n</ul></li>\n</ul>\n",
|
||||
|
||||
`* Foo
|
||||
|
||||
bar
|
||||
|
||||
qux
|
||||
`,
|
||||
`<ul>
|
||||
<li><p>Foo</p>
|
||||
|
||||
<pre><code>bar
|
||||
|
||||
qux
|
||||
</code></pre></li>
|
||||
</ul>
|
||||
`,
|
||||
}
|
||||
doTestsBlock(t, tests, 0)
|
||||
}
|
||||
|
||||
func TestFencedCodeBlockWithinList(t *testing.T) {
|
||||
doTestsBlock(t, []string{
|
||||
"* Foo\n\n ```\n bar\n\n qux\n ```\n",
|
||||
`<ul>
|
||||
<li><p>Foo</p>
|
||||
|
||||
<pre><code>bar
|
||||
|
||||
qux
|
||||
</code></pre></li>
|
||||
</ul>
|
||||
`,
|
||||
}, EXTENSION_FENCED_CODE)
|
||||
}
|
||||
|
||||
func TestOrderedList(t *testing.T) {
|
||||
var tests = []string{
|
||||
"1. Hello\n",
|
||||
|
@ -798,6 +829,26 @@ func TestOrderedList(t *testing.T) {
|
|||
|
||||
"1. numbers\n1. are ignored\n",
|
||||
"<ol>\n<li>numbers</li>\n<li>are ignored</li>\n</ol>\n",
|
||||
|
||||
`1. Foo
|
||||
|
||||
bar
|
||||
|
||||
|
||||
|
||||
qux
|
||||
`,
|
||||
`<ol>
|
||||
<li><p>Foo</p>
|
||||
|
||||
<pre><code>bar
|
||||
|
||||
|
||||
|
||||
qux
|
||||
</code></pre></li>
|
||||
</ol>
|
||||
`,
|
||||
}
|
||||
doTestsBlock(t, tests, 0)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue