diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php index 04a9ed8b105cbd2b207a62aba851e13d11233d59..85e6eefed3736d5e4caa99b514c34d4d7e902e8e 100644 --- a/inc/parser/metadata.php +++ b/inc/parser/metadata.php @@ -32,6 +32,10 @@ class Doku_Renderer_metadata extends Doku_Renderer { var $capture = true; var $store = ''; + function getFormat(){ + return 'metadata'; + } + function document_start(){ // reset metadata to persistent values $this->meta = $this->persistent; diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php index 0e6fa2d857d29c30e63236995f6acae3752c70e8..1b6340445d5833f220a0cb4b204c21619255d57c 100644 --- a/inc/parser/renderer.php +++ b/inc/parser/renderer.php @@ -37,13 +37,21 @@ class Doku_Renderer extends DokuWiki_Plugin { $this->info['toc'] = false; } + /** + * Returns the format produced by this renderer. + * + * Has to be overidden by decendend classes + */ + function getFormat(){ + trigger_error('getFormat() not implemented in '.get_class($this), E_USER_WARNING); + } + + //handle plugin rendering function plugin($name,$data){ $plugin =& plugin_load('syntax',$name); if($plugin != null){ - // determine mode from renderer class name - format = "Doku_Renderer_<mode>" - $mode = substr(get_class($this), 14); - $plugin->render($mode,$this,$data); + $plugin->render($this->getFormat(),$this,$data); } } diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index ea5b72495b926948aec7607f61573402e4bff390..e397f5bd74d679c6deb1066f74ceb7ab2d03de2b 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -36,6 +36,11 @@ class Doku_Renderer_xhtml extends Doku_Renderer { var $lastsec = 0; var $store = ''; + function getFormat(){ + return 'xhtml'; + } + + function document_start() { //reset some internals $this->toc = array(); diff --git a/inc/parserutils.php b/inc/parserutils.php index 1caad257efad4b1ae8cffc2f669832c92fe69fd6..20971ac03dc056adad92c30edbe38d2042826e77 100644 --- a/inc/parserutils.php +++ b/inc/parserutils.php @@ -516,7 +516,6 @@ function p_sort_modes($a, $b){ function p_render($mode,$instructions,& $info){ if(is_null($instructions)) return ''; - // try default renderer first: $file = DOKU_INC."inc/parser/$mode.php"; if(@file_exists($file)){