diff -r 902822492a68 -r fe660c52c48f includes/wikiengine/Parse/Mediawiki/Emphasis.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/includes/wikiengine/Parse/Mediawiki/Emphasis.php Wed Jun 13 16:07:17 2007 -0400 @@ -0,0 +1,86 @@ + + * @author Paul M. Jones + * @copyright 2005 bertrand Gugger + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @version CVS: $Id: Emphasis.php,v 1.4 2006/02/15 12:27:40 toggg Exp $ + * @link http://pear.php.net/package/Text_Wiki + */ + +/** + * Emphazised text rule parser class for Mediawiki. Makes Emphasis, Strong or both + * This class implements a Text_Wiki_Parse to find source text marked for + * emphasis, stronger and very as defined by text surrounded by 2,3 or 5 single-quotes. + * On parsing, the text itself is left in place, but the starting and ending + * instances of the single-quotes are replaced with tokens. + * + * @category Text + * @package Text_Wiki + * @author Bertrand Gugger + * @copyright 2005 bertrand Gugger + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Wiki + * @see Text_Wiki_Parse::Text_Wiki_Parse() + */ +class Text_Wiki_Parse_Emphasis extends Text_Wiki_Parse { + + /** + * The regular expression used to parse the source text and find + * matches conforming to this rule. Used by the parse() method. + * We match '' , ''' or ''''' embeded texts + * + * @access public + * @var string + * @see Text_Wiki_Parse::parse() + */ + var $regex = "/(? ['start'|'end'] The starting or ending point of the emphasized text. + * Generated tokens are Emphasis (this rule), Strong or Emphasis / Strong + * The text itself is left in the source but may content bested blocks + * + * @access public + * @param array &$matches The array of matches from parse(). + * @return string Delimited by start/end tokens to be used as + * placeholder in the source text surrounding the text to be emphasized. + */ + function process(&$matches) + { + $embeded = $matches[2]; + switch (strlen($matches[1])) { + case 1: + $start = $this->wiki->addToken($this->rule, array('type' => 'start')); + $end = $this->wiki->addToken($this->rule, array('type' => 'end')); + break; + case 3: + $embeded = "'" . $embeded . "'"; + case 2: + $start = $this->wiki->addToken('Strong', array('type' => 'start')); + $end = $this->wiki->addToken('Strong', array('type' => 'end')); + break; + case 4: + $start = $this->wiki->addToken($this->rule, array('type' => 'start')) + . $this->wiki->addToken('Strong', array('type' => 'start')); + $end = $this->wiki->addToken('Strong', array('type' => 'end')) + . $this->wiki->addToken($this->rule, array('type' => 'end')); + break; + } + return $start . $embeded . $end; + } +} +?>