diff -r f0431eb8161e -r 98c052fc3337 includes/wikiengine/Parse/Mediawiki/Paragraph.php --- a/includes/wikiengine/Parse/Mediawiki/Paragraph.php Sun Jun 21 00:16:21 2009 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ - -* -* @license LGPL -* -* @version $Id: Paragraph.php,v 1.3 2005/02/23 17:38:29 pmjones Exp $ -* -*/ - -/** -* -* 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 -* -*/ - -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', - 'pre' - ) - ); - - - /** - * - * 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; - - // was anything there? - if (trim($matches[0]) == '') { - return ''; - } - - // does the match start with a delimiter? - if (substr($matches[0], 0, 1) != $delim) { - // no. - - $start = $this->wiki->addToken( - $this->rule, array('type' => 'start') - ); - - $end = $this->wiki->addToken( - $this->rule, array('type' => 'end') - ); - - return $start . trim($matches[0]) . $end; - } - - // the line starts with a delimiter. read in the delimited - // token number, check the token, and see if we should - // skip it. - - // loop starting at the second character (we already know - // the first is a delimiter) until we find another - // delimiter; the text between them is a token key number. - $key = ''; - $len = strlen($matches[0]); - for ($i = 1; $i < $len; $i++) { - $char = $matches[0]{$i}; - if ($char == $delim) { - break; - } else { - $key .= $char; - } - } - - // look at the token and see if it's skippable (if we skip, - // it will not be marked as a paragraph) - $token_type = strtolower($this->wiki->tokens[$key][0]); - $skip = $this->getConf('skip', array()); - - if (in_array($token_type, $skip)) { - // this type of token should not have paragraphs applied to it. - // return the entire matched text. - return $matches[0]; - } else { - - $start = $this->wiki->addToken( - $this->rule, array('type' => 'start') - ); - - $end = $this->wiki->addToken( - $this->rule, array('type' => 'end') - ); - - return $start . trim($matches[0]) . $end; - } - } - - /** - * - * Abstrct method to parse source text for matches. - * - * Applies the rule's regular expression to the source text, passes - * every match to the process() method, and replaces the matched text - * with the results of the processing. - * - * @access public - * - * @see Text_Wiki_Parse::process() - * - */ - - function parse() - { - $source =& $this->wiki->source; - $source = wikiformat_process_block($source); - - $source = preg_replace('/(.*?)<\/litewiki>([\s]+?|$)/is', '\\1\\2', $source); - - // die('
' . htmlspecialchars($source) . '
'); - - $this->wiki->source = preg_replace_callback( - $this->regex, - array(&$this, 'process'), - $this->wiki->source - ); - - $source = preg_replace('/(.*?)<\/litewiki>/is', '\\1', $source); - } -} -?> \ No newline at end of file