web/lib/Zend/Markup.php
changeset 64 162c1de6545a
parent 19 1c2f13fd785c
child 68 ecaf28ffe26e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/Zend/Markup.php	Fri Mar 11 15:05:35 2011 +0100
@@ -0,0 +1,134 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Markup
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Markup.php 20277 2010-01-14 14:17:12Z kokx $
+ */
+
+/**
+ * @see Zend_Loader_PluginLoader
+ */
+require_once 'Zend/Loader/PluginLoader.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Markup
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Markup
+{
+    const CALLBACK = 'callback';
+    const REPLACE  = 'replace';
+
+
+    /**
+     * The parser loader
+     *
+     * @var Zend_Loader_PluginLoader
+     */
+    protected static $_parserLoader;
+
+    /**
+     * The renderer loader
+     *
+     * @var Zend_Loader_PluginLoader
+     */
+    protected static $_rendererLoader;
+
+
+    /**
+     * Disable instantiation of Zend_Markup
+     */
+    private function __construct() { }
+
+    /**
+     * Get the parser loader
+     *
+     * @return Zend_Loader_PluginLoader
+     */
+    public static function getParserLoader()
+    {
+        if (!(self::$_parserLoader instanceof Zend_Loader_PluginLoader)) {
+            self::$_parserLoader = new Zend_Loader_PluginLoader(array(
+                'Zend_Markup_Parser' => 'Zend/Markup/Parser/',
+            ));
+        }
+
+        return self::$_parserLoader;
+    }
+
+    /**
+     * Get the renderer loader
+     *
+     * @return Zend_Loader_PluginLoader
+     */
+    public static function getRendererLoader()
+    {
+        if (!(self::$_rendererLoader instanceof Zend_Loader_PluginLoader)) {
+            self::$_rendererLoader = new Zend_Loader_PluginLoader(array(
+                'Zend_Markup_Renderer' => 'Zend/Markup/Renderer/',
+            ));
+        }
+
+        return self::$_rendererLoader;
+    }
+
+    /**
+     * Add a parser path
+     *
+     * @param  string $prefix
+     * @param  string $path
+     * @return Zend_Loader_PluginLoader
+     */
+    public static function addParserPath($prefix, $path)
+    {
+        return self::getParserLoader()->addPrefixPath($prefix, $path);
+    }
+
+    /**
+     * Add a renderer path
+     *
+     * @param  string $prefix
+     * @param  string $path
+     * @return Zend_Loader_PluginLoader
+     */
+    public static function addRendererPath($prefix, $path)
+    {
+        return self::getRendererLoader()->addPrefixPath($prefix, $path);
+    }
+
+    /**
+     * Factory pattern
+     *
+     * @param  string $parser
+     * @param  string $renderer
+     * @param  array $options
+     * @return Zend_Markup_Renderer_RendererAbstract
+     */
+    public static function factory($parser, $renderer = 'Html', array $options = array())
+    {
+        $parserClass   = self::getParserLoader()->load($parser);
+        $rendererClass = self::getRendererLoader()->load($renderer);
+
+        $parser            = new $parserClass();
+        $options['parser'] = $parser;
+        $renderer          = new $rendererClass($options);
+
+        return $renderer;
+    }
+}