diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Markup.php --- /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 @@ + '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; + } +}