* * @license LGPL * * @version $Id: Code.php,v 1.11 2007/06/09 23:11:25 justinpatrin 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 on a line by itself, * followed by the inline code example, and terminated with the string * on a line by itself. The code example is run through the * native PHP highlight_string() function to colorize it, then surrounded * with
...
tags when rendered as XHTML. * * @category Text * * @package Text_Wiki * * @author Paul M. Jones * */ 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 = '/^(\)\n(.+)\n(\<\/code\>)(\s|$)/Umsi';*/ var $regex = ';^]*)?>((?:(?R)|.*?)*)\n(\s|$);msi'; /** * * Generates a token entry for the matched text. Token options are: * * 'text' => The full matched text, not including the 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]; } } ?>