-class ExtendedMarkdown extends MarkdownExtra_Parser {
-
- function ExtendedMarkdown() {
- $this->block_gamut += array(
- "doBlockWarning" => 45,
- );
- parent::MarkdownExtra_Parser();
- }
-
- function doBlockWarning($text) {
- $text = preg_replace_callback('/
- ( # Wrap whole match in $1
- (?>
- ^[ ]*![ ]? # "!" at the start of a line
- .+\n # rest of the first line
- (.+\n)* # subsequent consecutive lines
- \n* # blanks
- )+
- )
- /xm', array(&$this, '_doBlockWarning_callback'), $text);
-
- return $text;
- }
-
- function _doBlockWarning_callback($matches) {
- $bq = $matches[1];
- # trim one level of quoting - trim whitespace-only lines
- $bq = preg_replace('/^[ ]*![ ]?|^[ ]+$/m', '', $bq);
- $bq = $this->runBlockGamut($bq); # recurse
-
- $bq = preg_replace('/^/m', " ", $bq);
- # These leading spaces cause problem with <pre> content,
- # so we need to fix that:
-// $bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx', array(&$this, '__doBlockWarning_callback2'), $bq);
-
- return "\n" . $this->hashBlock("<div class='md_warning'>\n$bq\n</div>") . "\n\n";
- }
-
- function _doBlockWarning_callback2($matches) {
- $pre = $matches[1];
- $pre = preg_replace('/^ /m', '', $pre);
- return $pre;
- }
-
-}
-