Lexer->addEntryPattern('\[cd\=.*?\](?=.*?\x5B/cd\x5D)',$mode,'plugin_bbcodeextensions_classdiv'); } function postConnect() { $this->Lexer->addExitPattern('\[/cd\]','plugin_bbcodeextensions_classdiv'); } function handle($match, $state, $pos, Doku_Handler $handler) { switch ($state) { case DOKU_LEXER_ENTER : $omatch= $match; $match = explode('"',substr($match, 3, -1)); return array($state, $match[1], $omatch); 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(in_array($mode, ['xhtml', 's5'], true)) { list($state, $match) = $data; $defcl= $this->getConf('class_preffix') ?? 'bbcodeextensions'; switch ($state) { case DOKU_LEXER_ENTER : $renderer->doc .= << EOF; break; case DOKU_LEXER_UNMATCHED : $match = $renderer->_xmlEntities($match); $renderer->doc .= $match; break; case DOKU_LEXER_EXIT : $renderer->doc .= ''; break; } return true; } // if render if(in_array($mode, ['text'], true)) { list($state, $match) = $data; switch ($state) { case DOKU_LEXER_ENTER : break; case DOKU_LEXER_UNMATCHED : $renderer->doc .= $match; break; case DOKU_LEXER_EXIT : break; } return true; } return false; } }