summaryrefslogtreecommitdiff
path: root/includes/pear/Text/Wiki/Parse/Default/Paragraph.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/pear/Text/Wiki/Parse/Default/Paragraph.php')
-rw-r--r--includes/pear/Text/Wiki/Parse/Default/Paragraph.php116
1 files changed, 116 insertions, 0 deletions
diff --git a/includes/pear/Text/Wiki/Parse/Default/Paragraph.php b/includes/pear/Text/Wiki/Parse/Default/Paragraph.php
new file mode 100644
index 0000000..e748a11
--- /dev/null
+++ b/includes/pear/Text/Wiki/Parse/Default/Paragraph.php
@@ -0,0 +1,116 @@
+<?php
+
+/**
+*
+* Parses for paragraph blocks.
+*
+* @category Text
+*
+* @package Text_Wiki
+*
+* @author Paul M. Jones <pmjones@php.net>
+*
+* @license LGPL
+*
+* @version $Id: Paragraph.php 286814 2009-08-04 17:03:17Z rodrigosprimo $
+*
+*/
+
+/**
+*
+* Parses for paragraph blocks.
+*
+* This class implements a Text_Wiki rule to find sections of the source
+* text that are paragraphs. A para is any line not starting with a token
+* delimiter, followed by two newlines.
+*
+* @category Text
+*
+* @package Text_Wiki
+*
+* @author Paul M. Jones <pmjones@php.net>
+*
+*/
+
+class Text_Wiki_Parse_Paragraph extends Text_Wiki_Parse {
+
+ /**
+ *
+ * The regular expression used to find source text matching this
+ * rule.
+ *
+ * @access public
+ *
+ * @var string
+ *
+ */
+
+ var $regex = "/^.*?\n\n/m";
+
+ var $conf = array(
+ 'skip' => array(
+ 'blockquote', // are we sure about this one?
+ 'code',
+ 'heading',
+ 'horiz',
+ 'deflist',
+ 'table',
+ 'list',
+ 'toc'
+ )
+ );
+
+
+ /**
+ *
+ * Generates a token entry for the matched text. Token options are:
+ *
+ * 'start' => The starting point of the paragraph.
+ *
+ * 'end' => The ending point of the paragraph.
+ *
+ * @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)
+ {
+ $delim = $this->wiki->delim;
+ $skip = $this->getConf('skip', array());
+
+ // was anything there?
+ if (trim($matches[0]) == '') {
+ return '';
+ }
+
+ // does the match has tokens inside?
+ preg_match_all("/(?:$delim)(\d+?)(?:$delim)/", $matches[0], $delimiters, PREG_SET_ORDER);
+
+ // look each delimiter inside the match and see if it's skippable
+ // (if we skip, it will not be marked as a paragraph)
+ foreach ($delimiters as $d) {
+ $token_type = strtolower($this->wiki->tokens[$d[1]][0]);
+ if (in_array($token_type, $skip)) {
+ return $matches[0];
+ }
+ }
+
+ // if there is no skipable token inside the match
+ // add the Paragraph token and return
+ $start = $this->wiki->addToken(
+ $this->rule, array('type' => 'start')
+ );
+
+ $end = $this->wiki->addToken(
+ $this->rule, array('type' => 'end')
+ );
+
+ return $start . trim($matches[0]) . $end;
+ }
+}
+?>