includes/wikiengine/Render.php
changeset 1 fe660c52c48f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/wikiengine/Render.php	Wed Jun 13 16:07:17 2007 -0400
@@ -0,0 +1,217 @@
+<?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);
+    }
+}
+?>