1
0
mirror of https://github.com/erusev/parsedown.git synced 2023-08-10 21:13:06 +03:00

Merge pull request #600 from aidantwoods/fix/code-block-closer

Fix fenced code block closer length rules
This commit is contained in:
Aidan Woods 2018-04-05 18:46:49 +01:00 committed by GitHub
commit 96581dbe16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 7 deletions

View File

@ -443,16 +443,16 @@ class Parsedown
protected function blockFencedCode($Line)
{
if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([^`]+)?[ ]*$/', $Line['text'], $matches))
if (preg_match('/^(['.$Line['text'][0].']{3,})[ ]*([^`]+)?[ ]*$/', $Line['text'], $matches))
{
$Element = array(
'name' => 'code',
'text' => '',
);
if (isset($matches[1]))
if (isset($matches[2]))
{
$class = 'language-'.$matches[1];
$class = 'language-'.$matches[2];
$Element['attributes'] = array(
'class' => $class,
@ -461,6 +461,7 @@ class Parsedown
$Block = array(
'char' => $Line['text'][0],
'openerLength' => mb_strlen($matches[1]),
'element' => array(
'name' => 'pre',
'element' => $Element,
@ -485,8 +486,10 @@ class Parsedown
unset($Block['interrupted']);
}
if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text']))
{
if (
preg_match('/^(['.preg_quote($Block['char']).']{3,})[ ]*$/', $Line['text'], $matches)
and mb_strlen($matches[1]) >= $Block['openerLength']
) {
$Block['element']['element']['text'] = substr($Block['element']['element']['text'], 1);
$Block['complete'] = true;

View File

@ -8,4 +8,7 @@ echo $message;</code></pre>
<pre><code class="language-html+php">&lt;?php
echo "Hello World";
?&gt;
&lt;a href="http://auraphp.com" &gt;Aura Project&lt;/a&gt;</code></pre>
&lt;a href="http://auraphp.com" &gt;Aura Project&lt;/a&gt;</code></pre>
<pre><code>the following isn't quite enough to close
```
still a fenced code block</code></pre>

View File

@ -22,4 +22,10 @@ echo 'language identifier with non words';
echo "Hello World";
?>
<a href="http://auraphp.com" >Aura Project</a>
```
```
````
the following isn't quite enough to close
```
still a fenced code block
````