Lexer->addEntryPattern($pattern, $mode, PluginUtility::getModeForComponent($this->getPluginComponent()));
}
public function postConnect()
{
$this->Lexer->addExitPattern('' . self::TAG . '>', PluginUtility::getModeForComponent($this->getPluginComponent()));
}
/**
*
* The handle function goal is to parse the matched syntax through the pattern function
* and to return the result for use in the renderer
* This result is always cached until the page is modified.
* @param string $match
* @param int $state
* @param int $pos
* @param Doku_Handler $handler
* @return array|bool
* @see DokuWiki_Syntax_Plugin::handle()
*
*/
function handle($match, $state, $pos, Doku_Handler $handler)
{
switch ($state) {
case DOKU_LEXER_ENTER:
$tagAttributes = PluginUtility::getTagAttributes($match);
return array(
PluginUtility::STATE => $state,
PluginUtility::ATTRIBUTES => $tagAttributes,
PluginUtility::PAYLOAD => "
");
case DOKU_LEXER_UNMATCHED:
// We should never get there but yeah ...
return
array(
PluginUtility::STATE => $state,
PluginUtility::PAYLOAD => PluginUtility::escape($match)
);
case DOKU_LEXER_EXIT :
return array(
PluginUtility::STATE => $state,
PluginUtility::PAYLOAD => "
"
);
}
return array();
}
/**
* Render the output
* @param string $format
* @param Doku_Renderer $renderer
* @param array $data - what the function handle() return'ed
* @return boolean - rendered correctly? (however, returned value is not used at the moment)
* @see DokuWiki_Syntax_Plugin::render()
*
*
*/
function render($format, Doku_Renderer $renderer, $data)
{
if ($format == 'xhtml') {
/** @var Doku_Renderer_xhtml $renderer */
$state = $data[PluginUtility::STATE];
switch ($state) {
case DOKU_LEXER_ENTER :
case DOKU_LEXER_EXIT :
$renderer->doc .= $data[PluginUtility::PAYLOAD] . DOKU_LF;
break;
case DOKU_LEXER_UNMATCHED:
$renderer->doc .= $data[PluginUtility::PAYLOAD];
break;
}
return true;
}
return false;
}
}