protected function doFencedCodeBlocks($text)
{
#
# Adding the fenced code block syntax to regular Markdown:
#
# ~~~
# Code block
# ~~~
#
$less_than_tab = $this->tab_width;
$text = preg_replace_callback('{
(?:\\n|\\A)
# 1: Opening marker
(
(?:~{3,}|`{3,}) # 3 or more tildes/backticks.
)
[ ]*
(?:
\\.?([-_:a-zA-Z0-9]+) # 2: standalone class name
|
' . $this->id_class_attr_catch_re . ' # 3: Extra attributes
)?
[ ]* \\n # Whitespace and newline following marker.
# 4: Content
(
(?>
(?!\\1 [ ]* \\n) # Not a closing marker.
.*\\n+
)+
)
# Closing marker.
\\1 [ ]* (?= \\n )
}xm', array($this, '_doFencedCodeBlocks_callback'), $text);
return $text;
}