diff --git a/markdown.php b/markdown.php index f548fc2..d296dfd 100644 --- a/markdown.php +++ b/markdown.php @@ -2552,9 +2552,13 @@ class MarkdownExtra_Parser extends Markdown_Parser { ( ~{3,} # Marker: three tilde or more. ) + + # 2: CSS classes + \s?(\.[^\n]+)? + [ ]* \n # Whitespace and newline following marker. - # 2: Content + # 3: Content ( (?> (?!\1 [ ]* \n) # Not a closing marker. @@ -2563,18 +2567,26 @@ class MarkdownExtra_Parser extends Markdown_Parser { ) # Closing marker. - \1 [ ]* \n + \1 + + # 4: CSS classes + \s?(\.[^\n]+)? + + # End of line + [ ]* \n }xm', array(&$this, '_doFencedCodeBlocks_callback'), $text); return $text; } function _doFencedCodeBlocks_callback($matches) { - $codeblock = $matches[2]; + $codeblock = $matches[3]; $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES); - $codeblock = preg_replace_callback('/^\n+/', + $codeblock = preg_replace_callback('/\n+/', array(&$this, '_doFencedCodeBlocks_newlines'), $codeblock); - $codeblock = "
$codeblock";
+ $class = ! empty($matches[2]) ? $matches[2] : ( ! empty($matches[4]) ? $matches[4] : '');
+ $class = ! empty($class) ? ' class="'.trim($class, '.').'"' : '';
+ $codeblock = "$codeblock";
return "\n\n".$this->hashBlock($codeblock)."\n\n";
}
function _doFencedCodeBlocks_newlines($matches) {