/** * Overload to support ```-fenced code blocks for pre-Markdown Extra 1.2.8 * https://help.github.com/articles/github-flavored-markdown#fenced-code-blocks */ public function doFencedCodeBlocks($text) { // If we're at least at 1.2.8, native fenced code blocks are in. // Below is just copied from it in case we somehow got loaded on // top of someone else's Markdown Extra if (version_compare(MARKDOWNEXTRA_VERSION, '1.2.8', '>=')) { return parent::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; }