|
// +----------------------------------------------------------------------+
//
// $Id: code.php,v 1.2 2004/01/04 16:03:24 pmjones Exp $
/**
*
* This class implements a Text_Wiki_Rule 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. * * @author Paul M. Jones
)\n(.+)\n(\<\/code\>)(\s|$)/Umsi';
/**
*
* 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)
{
$options = array('text' => $matches[2]);
return $this->addToken($options) . $matches[4];
}
/**
*
* Renders a token into text matching the requested format.
*
* @access public
*
* @param array $options The "options" portion of the token (second
* element).
*
* @return string The text rendered from the token options.
*
*/
function renderXhtml($options)
{
// trim opening and closing whitespace
$text = trim($options['text']);
// convert tabs to four spaces
$text = str_replace("\t", " ", $text);
// convert entities
$text = htmlentities($text);
// done!
return "\n$text
\n";
}
}
?>