home *** CD-ROM | disk | FTP | other *** search
- <?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.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 <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];
- }
- }
- ?>
-