diff --git a/Parsedown.php b/Parsedown.php index bb2bd11..2ee8417 100644 --- a/Parsedown.php +++ b/Parsedown.php @@ -188,16 +188,34 @@ class Parsedown # ~ + $highPriority = array(); + $blockTypes = $this->unmarkedBlockTypes; if (isset($this->BlockTypes[$marker])) { foreach ($this->BlockTypes[$marker] as $blockType) { - $blockTypes []= $blockType; + if + ( + isset($CurrentBlock['type']) + and $CurrentBlock['type'] === $blockType + and ! isset($CurrentBlock['interrupted']) + and isset($CurrentBlock['continuable']) + and ! isset($CurrentBlock['complete']) + ) + { + $highPriority[] = $CurrentBlock['type']; + } + else + { + $blockTypes []= $blockType; + } } } + $blockTypes = array_merge($highPriority, $blockTypes); + # # ~ @@ -589,8 +607,6 @@ class Parsedown return null; } - unset($placeholder); - if ($Line['text'][0] === '[' and $this->blockReference($Line)) { return $Block; @@ -598,7 +614,7 @@ class Parsedown if ( ! isset($Block['interrupted'])) { - $text = preg_replace('/^[ ]{0,'.min(4, $Block['indent'] + 1).'}/', '', $Line['body']); + $text = preg_replace('/^[ ]{0,'.min(4, $Block['indent']).'}/', '', $Line['body']); $Block['li']['text'] []= $text; @@ -609,7 +625,12 @@ class Parsedown { $Block['li']['text'] []= ''; - $text = preg_replace('/^[ ]{0,'.min(4, $Block['indent'] + 1).'}/', '', $Line['body']); + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + if ($placeholder = $this->blockList($Line)) + { + $text = preg_replace('/^[ ]{0,'.min(4, $Block['indent']).'}/', '', $Line['body']); + } $Block['li']['text'] []= $text;