*/ class syntax_plugin_fontsize extends DokuWiki_Syntax_Plugin { function getInfo(){ return array( 'author' => 'Jesús A. Álvarez', 'email' => 'zydeco@namedfork.net', 'date' => '2008-04-25', 'name' => 'Font Size Plugin', 'desc' => 'Allow different font sizes.', 'url' => 'https://www.dokuwiki.org/plugin:fontsize', ); } function getType() { return('formatting'); } function getSort() { return 131; } function connectTo($mode) { $this->Lexer->addEntryPattern('##+(?=.*##+)',$mode,'plugin_fontsize'); $this->Lexer->addEntryPattern(',,+(?=.*,,+)',$mode,'plugin_fontsize'); } function postConnect() { $this->Lexer->addExitPattern('##+', 'plugin_fontsize'); $this->Lexer->addExitPattern(',,+', 'plugin_fontsize'); } function handle($match, $state, $pos, Doku_Handler $handler){ switch ($state) { case DOKU_LEXER_ENTER: if ($match{1} == '#') $size = (strlen($match)*20)+80 .'%'; else $size = 120-(strlen($match)*20) . '%'; return array($state, $size); case DOKU_LEXER_UNMATCHED: return array($state, $match); case DOKU_LEXER_EXIT: return array($state, ''); } return array(); } function render($mode, Doku_Renderer $renderer, $data) { if ($mode == 'xhtml') { list($state, $match) = $data; switch ($state) { case DOKU_LEXER_ENTER: $renderer->doc .= ""; break; case DOKU_LEXER_UNMATCHED: $renderer->doc .= $renderer->_xmlEntities($match); break; case DOKU_LEXER_EXIT: $renderer->doc .= ''; break; } return true; } return false; } } //Setup VIM: ex: et ts=4 enc=utf-8 :