Viewing file: Render.php (4.82 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php // vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: /** * Base rendering class for parsed and tokenized text. * * PHP versions 4 and 5 * * @category Text * @package Text_Wiki * @author Paul M. Jones <pmjones@php.net> * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 * @version CVS: $Id: Render.php,v 1.9 2006/02/17 05:42:55 toggg Exp $ * @link http://pear.php.net/package/Text_Wiki */
/** * Base rendering class for parsed and tokenized text. * * @category Text * @package Text_Wiki * @author Paul M. Jones <pmjones@php.net> * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 * @version Release: @package_version@ * @link http://pear.php.net/package/Text_Wiki */ class Text_Wiki_Render {
/** * * Configuration options for this render rule. * * @access public * * @var string * */
var $conf = array();
/** * * The name of this rule's format. * * @access public * * @var string * */
var $format = null;
/** * * The name of this rule's token array elements. * * @access public * * @var string * */
var $rule = null;
/** * * A reference to the calling Text_Wiki object. * * This is needed so that each rule has access to the same source * text, token set, URLs, interwiki maps, page names, etc. * * @access public * * @var object */
var $wiki = null;
/** * * Constructor for this render format or rule. * * @access public * * @param object &$obj The calling "parent" Text_Wiki object. * */
function Text_Wiki_Render(&$obj) { // keep a reference to the calling Text_Wiki object $this->wiki =& $obj;
// get the config-key-name for this object, // strip the Text_Wiki_Render_ part // 01234567890123456 $tmp = get_class($this); $tmp = substr($tmp, 17);
// split into pieces at the _ mark. // first part is format, second part is rule. $part = explode('_', $tmp); $this->format = isset($part[0]) ? ucwords(strtolower($part[0])) : null; $this->rule = isset($part[1]) ? ucwords(strtolower($part[1])) : null;
// is there a format but no rule? // then this is the "main" render object, with // pre() and post() methods. if ($this->format && ! $this->rule && isset($this->wiki->formatConf[$this->format]) && is_array($this->wiki->formatConf[$this->format])) {
// this is a format render object $this->conf = array_merge( $this->conf, $this->wiki->formatConf[$this->format] );
}
// is there a format and a rule? if ($this->format && $this->rule && isset($this->wiki->renderConf[$this->format][$this->rule]) && is_array($this->wiki->renderConf[$this->format][$this->rule])) {
// this is a rule render object $this->conf = array_merge( $this->conf, $this->wiki->renderConf[$this->format][$this->rule] ); } }
/** * * Simple method to safely get configuration key values. * * @access public * * @param string $key The configuration key. * * @param mixed $default If the key does not exist, return this value * instead. * * @return mixed The configuration key value (if it exists) or the * default value (if not). * */
function getConf($key, $default = null) { if (isset($this->conf[$key])) { return $this->conf[$key]; } else { return $default; } }
/** * * Simple method to wrap a configuration in an sprintf() format. * * @access public * * @param string $key The configuration key. * * @param string $format The sprintf() format string. * * @return mixed The formatted configuration key value (if it exists) * or null (if it does not). * */
function formatConf($format, $key) { if (isset($this->conf[$key])) { return sprintf($format, $this->conf[$key]); } else { return null; } }
/** * Default method to render url * * @access public * @param string $urlChunk a part of an url to render * @return rendered url * */
function urlEncode($urlChunk) { return rawurlencode($urlChunk); }
/** * Default method to render text (htmlspecialchars) * * @access public * @param string $text the text to render * @return rendered text * */
function textEncode($text) { return htmlspecialchars($text); } } ?>
|