1*f62ea8a1Sandi<?php 2*f62ea8a1Sandi/** 3*f62ea8a1Sandi * Info Plugin: Displays information about various DokuWiki internals 4*f62ea8a1Sandi * 5*f62ea8a1Sandi * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6*f62ea8a1Sandi * @author Andreas Gohr <andi@splitbrain.org> 7*f62ea8a1Sandi */ 8*f62ea8a1Sandi 9*f62ea8a1Sandiif(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); 10*f62ea8a1Sandiif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 11*f62ea8a1Sandirequire_once(DOKU_PLUGIN.'syntax.php'); 12*f62ea8a1Sandi 13*f62ea8a1Sandi/** 14*f62ea8a1Sandi * All DokuWiki plugins to extend the parser/rendering mechanism 15*f62ea8a1Sandi * need to inherit from this class 16*f62ea8a1Sandi */ 17*f62ea8a1Sandiclass syntax_plugin_info extends DokuWiki_Syntax_Plugin { 18*f62ea8a1Sandi 19*f62ea8a1Sandi /** 20*f62ea8a1Sandi * What kind of syntax are we? 21*f62ea8a1Sandi */ 22*f62ea8a1Sandi function getType(){ 23*f62ea8a1Sandi return 'substition'; 24*f62ea8a1Sandi } 25*f62ea8a1Sandi 26*f62ea8a1Sandi /** 27*f62ea8a1Sandi * Where to sort in? 28*f62ea8a1Sandi */ 29*f62ea8a1Sandi function getSort(){ 30*f62ea8a1Sandi return 155; 31*f62ea8a1Sandi } 32*f62ea8a1Sandi 33*f62ea8a1Sandi 34*f62ea8a1Sandi /** 35*f62ea8a1Sandi * Connect pattern to lexer 36*f62ea8a1Sandi */ 37*f62ea8a1Sandi function connectTo($mode) { 38*f62ea8a1Sandi $this->Lexer->addSpecialPattern('~~INFO:\w+~~',$mode,'plugin_info'); 39*f62ea8a1Sandi } 40*f62ea8a1Sandi 41*f62ea8a1Sandi 42*f62ea8a1Sandi /** 43*f62ea8a1Sandi * Handle the match 44*f62ea8a1Sandi */ 45*f62ea8a1Sandi function handle($match, $state, $pos, &$handler){ 46*f62ea8a1Sandi $match = substr($match,7,-2); //strip ~~INFO: from start and ~~ from end 47*f62ea8a1Sandi return array(strtolower($match)); 48*f62ea8a1Sandi } 49*f62ea8a1Sandi 50*f62ea8a1Sandi /** 51*f62ea8a1Sandi * Create output 52*f62ea8a1Sandi */ 53*f62ea8a1Sandi function render($mode, &$renderer, $data) { 54*f62ea8a1Sandi if($mode == 'xhtml'){ 55*f62ea8a1Sandi //handle various info stuff 56*f62ea8a1Sandi switch ($data[0]){ 57*f62ea8a1Sandi case 'version'; 58*f62ea8a1Sandi $renderer->doc .= getVersion(); 59*f62ea8a1Sandi break; 60*f62ea8a1Sandi case 'syntaxmodes'; 61*f62ea8a1Sandi $renderer->doc .= $this->_syntaxmodes_xhtml(); 62*f62ea8a1Sandi break; 63*f62ea8a1Sandi case 'syntaxtypes'; 64*f62ea8a1Sandi $renderer->doc .= $this->_syntaxtypes_xhtml(); 65*f62ea8a1Sandi break; 66*f62ea8a1Sandi default: 67*f62ea8a1Sandi $renderer->doc .= "no info about ".htmlspecialchars($data[0]); 68*f62ea8a1Sandi } 69*f62ea8a1Sandi return true; 70*f62ea8a1Sandi } 71*f62ea8a1Sandi return false; 72*f62ea8a1Sandi } 73*f62ea8a1Sandi 74*f62ea8a1Sandi /** 75*f62ea8a1Sandi * lists all known syntax types and their registered modes 76*f62ea8a1Sandi */ 77*f62ea8a1Sandi function _syntaxtypes_xhtml(){ 78*f62ea8a1Sandi global $PARSER_MODES; 79*f62ea8a1Sandi $doc = ''; 80*f62ea8a1Sandi 81*f62ea8a1Sandi $doc .= '<table class="inline"><tbody>'; 82*f62ea8a1Sandi foreach($PARSER_MODES as $mode => $modes){ 83*f62ea8a1Sandi $doc .= '<tr>'; 84*f62ea8a1Sandi $doc .= '<td class="leftalign">'; 85*f62ea8a1Sandi $doc .= $mode; 86*f62ea8a1Sandi $doc .= '</td>'; 87*f62ea8a1Sandi $doc .= '<td class="leftalign">'; 88*f62ea8a1Sandi $doc .= join(', ',$modes); 89*f62ea8a1Sandi $doc .= '</td>'; 90*f62ea8a1Sandi $doc .= '</tr>'; 91*f62ea8a1Sandi } 92*f62ea8a1Sandi $doc .= '</tbody></table>'; 93*f62ea8a1Sandi return $doc; 94*f62ea8a1Sandi } 95*f62ea8a1Sandi 96*f62ea8a1Sandi /** 97*f62ea8a1Sandi * lists all known syntax modes and their sorting value 98*f62ea8a1Sandi */ 99*f62ea8a1Sandi function _syntaxmodes_xhtml(){ 100*f62ea8a1Sandi $modes = p_get_parsermodes(); 101*f62ea8a1Sandi $doc = ''; 102*f62ea8a1Sandi 103*f62ea8a1Sandi foreach ($modes as $mode){ 104*f62ea8a1Sandi $doc .= $mode['mode'].' ('.$mode['sort'].'), '; 105*f62ea8a1Sandi } 106*f62ea8a1Sandi return $doc; 107*f62ea8a1Sandi } 108*f62ea8a1Sandi} 109*f62ea8a1Sandi 110*f62ea8a1Sandi//Setup VIM: ex: et ts=4 enc=utf-8 : 111