php-markdown icon indicating copy to clipboard operation
php-markdown copied to clipboard

Fenced code inside blockquote followed by fenced code

Open waylan opened this issue 13 years ago • 1 comments

Fenced code blocks inside a blockquote works fine until another fenced code block is included in the document anywhere after the blockquote.

For example:

> ~~~
foo
~~~

~~~
bar
~~~

results in:

<blockquote>
  <p>~~~
  foo</p>
</blockquote>

<pre><code><br /></code></pre>

<p>bar
~~~</p>

additionally:

> ~~~
foo
~~~

other stuff between the fenced code blocks

~~~
bar
~~~

does not help:

<blockquote>
  <p>~~~
  foo</p>
</blockquote>

<pre><code><br />other stuff between the fenced code blocks

</code></pre>

<p>bar
~~~</p>

If you remove all fenced code blocks after the blockquote, or have every line of the blockquote start with > then the problem goes away.

So this works fine:

> ~~~
> foo
> ~~~

~~~
bar
~~~

As does this:

> ~~~
foo
~~~

Paragraph at end of document

All examples above were tested on the Dingus with PHP Markdown Extra 1.2.5 .

waylan avatar Jan 25 '12 16:01 waylan

This is definitely a bug, but it's hard to fix given how the parser works currently.

To fix this we'd need to change the parsing model to a one-pass parser for block-level constructs. This is partially already done inside the HTML block hasher for a couple of constructs so it does not hash the content of code blocks, so it'd be a nice place to start the effort.

michelf avatar Jan 25 '12 19:01 michelf