includes/wikiengine/Parse/Mediawiki/Emphasis.php
author Dan
Thu, 17 Jan 2008 02:03:33 -0500
changeset 349 fdaf9070566c
parent 1 fe660c52c48f
permissions -rw-r--r--
More progress on the installer. At this point it can install and import the language, but does not rename config files. Still much work to be done, most notably localization and creation of MySQL users and databases.

<?php
// vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4:
/**
 * Mediawiki: Parses for emphazised text.
 *
 * Text_Wiki rule parser to find source text emphazised
 * as defined by text surrounded by repeated single quotes  ''...'' and more
 * Translated are ''emphasis'' , '''strong''' or '''''both''''' ...
 *
 * PHP versions 4 and 5
 *
 * @category   Text
 * @package    Text_Wiki
 * @author     Bertrand Gugger <bertrand@toggg.com>
 * @author     Paul M. Jones <pmjones@php.net>
 * @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 <bertrand@toggg.com>
 * @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 = "/(?<!')'('{1,4})(.*?)\\1'(?!')/";

    /**
     * Generates a replacement for the matched text.  Token options are:
     * - 'type' => ['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;
    }
}
?>