Viewing file: Code.php (2.31 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?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 237313 2007-06-09 23:11:25Z justinpatrin $ * */
/** * * 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]; } } ?>
|