doFencedCodeBlocks() public method

public doFencedCodeBlocks ( $text )
Beispiel #1
0
    /**
     * 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;
    }