diff -r 902822492a68 -r fe660c52c48f includes/wikiengine/Parse/Mediawiki/Code.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/includes/wikiengine/Parse/Mediawiki/Code.php Wed Jun 13 16:07:17 2007 -0400 @@ -0,0 +1,99 @@ +<?php + +/** +* +* Parses for text marked as a code example block. +* +* @category Text +* +* @package Text_Wiki +* +* @author Paul M. Jones <pmjones@php.net> +* +* @license LGPL +* +* @version $Id: Code.php,v 1.10 2006/02/21 14:33:53 toggg Exp $ +* +*/ + +/** +* +* Parses for text marked as a code example block. +* +* This class implements a Text_Wiki_Parse to find sections marked as code +* examples. Blocks are marked as the string <code> on a line by itself, +* followed by the inline code example, and terminated with the string +* </code> on a line by itself. The code example is run through the +* native PHP highlight_string() function to colorize it, then surrounded +* with <pre>...</pre> tags when rendered as XHTML. +* +* @category Text +* +* @package Text_Wiki +* +* @author Paul M. Jones <pmjones@php.net> +* +*/ + +class Text_Wiki_Parse_Code extends Text_Wiki_Parse { + + + /** + * + * The regular expression used to find source text matching this + * rule. + * + * @access public + * + * @var string + * + */ + +/* var $regex = '/^(\<code( .+)?\>)\n(.+)\n(\<\/code\>)(\s|$)/Umsi';*/ + var $regex = ';^<code(\s[^>]*)?>((?:(?R)|.)*?)\n</code>(\s|$);msi'; + + /** + * + * Generates a token entry for the matched text. Token options are: + * + * 'text' => The full matched text, not including the <code></code> tags. + * + * @access public + * + * @param array &$matches The array of matches from parse(). + * + * @return A delimited token number to be used as a placeholder in + * the source text. + * + */ + + function process(&$matches) + { + // are there additional attribute arguments? + $args = trim($matches[1]); + + if ($args == '') { + $options = array( + 'text' => $matches[2], + 'attr' => array('type' => '') + ); + } else { + // get the attributes... + $attr = $this->getAttrs($args); + + // ... and make sure we have a 'type' + if (! isset($attr['type'])) { + $attr['type'] = ''; + } + + // retain the options + $options = array( + 'text' => $matches[2], + 'attr' => $attr + ); + } + + return $this->wiki->addToken($this->rule, $options) . $matches[3]; + } +} +?>