* * @license LGPL * * @version $Id$ * */ /** * * Parses for text marked as a code example block. * * This class implements a Text_Wiki_Parse_Default 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_Default_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'; */ var $regex = ';^]*)?>(.*?)\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]; } }