--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/wikiengine/Parse/Default/Code.php Wed Jun 13 16:07:17 2007 -0400
@@ -0,0 +1,99 @@
+<?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.10 2006/02/21 14:33:53 toggg 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];
+ }
+}
+?>