1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeau 4*04fd306cSNickeaurequire_once(__DIR__ . '/../vendor/autoload.php'); 5*04fd306cSNickeau 6*04fd306cSNickeauuse ComboStrap\BreadcrumbTag; 7*04fd306cSNickeauuse ComboStrap\PluginUtility; 8*04fd306cSNickeauuse ComboStrap\XmlTagProcessing; 9*04fd306cSNickeau 10*04fd306cSNickeau 11*04fd306cSNickeau/** 12*04fd306cSNickeau * The empty pattern / void element 13*04fd306cSNickeau * (inline) 14*04fd306cSNickeau */ 15*04fd306cSNickeauclass syntax_plugin_combo_xmlinlineemptytag extends DokuWiki_Syntax_Plugin 16*04fd306cSNickeau{ 17*04fd306cSNickeau 18*04fd306cSNickeau // should be the same than the last name of the class name 19*04fd306cSNickeau const TAG = "xmlemptytag"; 20*04fd306cSNickeau 21*04fd306cSNickeau function getType(): string 22*04fd306cSNickeau { 23*04fd306cSNickeau return 'substition'; 24*04fd306cSNickeau } 25*04fd306cSNickeau 26*04fd306cSNickeau /** 27*04fd306cSNickeau * How Dokuwiki will add P element 28*04fd306cSNickeau * 29*04fd306cSNickeau * * 'normal' - Inline 30*04fd306cSNickeau * * 'block' - Block (dokuwiki does not create p inside) 31*04fd306cSNickeau * * 'stack' - Block (dokuwiki creates p inside) 32*04fd306cSNickeau * 33*04fd306cSNickeau * @see DokuWiki_Syntax_Plugin::getPType() 34*04fd306cSNickeau */ 35*04fd306cSNickeau function getPType(): string 36*04fd306cSNickeau { 37*04fd306cSNickeau /** 38*04fd306cSNickeau * Empty tag may be also block (ie Navigational {@link BreadcrumbTag} for instance 39*04fd306cSNickeau */ 40*04fd306cSNickeau return 'normal'; 41*04fd306cSNickeau } 42*04fd306cSNickeau 43*04fd306cSNickeau function getAllowedTypes(): array 44*04fd306cSNickeau { 45*04fd306cSNickeau return array(); 46*04fd306cSNickeau } 47*04fd306cSNickeau 48*04fd306cSNickeau function getSort(): int 49*04fd306cSNickeau { 50*04fd306cSNickeau // should be before all container tag 51*04fd306cSNickeau return 998; 52*04fd306cSNickeau } 53*04fd306cSNickeau 54*04fd306cSNickeau 55*04fd306cSNickeau function connectTo($mode) 56*04fd306cSNickeau { 57*04fd306cSNickeau 58*04fd306cSNickeau $pattern = PluginUtility::getEmptyTagPatternGeneral(); 59*04fd306cSNickeau $this->Lexer->addSpecialPattern($pattern, $mode, PluginUtility::getModeFromTag($this->getPluginComponent())); 60*04fd306cSNickeau 61*04fd306cSNickeau } 62*04fd306cSNickeau 63*04fd306cSNickeau 64*04fd306cSNickeau function handle($match, $state, $pos, Doku_Handler $handler): array 65*04fd306cSNickeau { 66*04fd306cSNickeau 67*04fd306cSNickeau return XmlTagProcessing::handleStaticEmptyTag($match, $state, $pos, $handler, $this); 68*04fd306cSNickeau 69*04fd306cSNickeau } 70*04fd306cSNickeau 71*04fd306cSNickeau /** 72*04fd306cSNickeau * Render the output 73*04fd306cSNickeau * @param string $format 74*04fd306cSNickeau * @param Doku_Renderer $renderer 75*04fd306cSNickeau * @param array $data - what the function handle() return'ed 76*04fd306cSNickeau * @return boolean - rendered correctly? (however, returned value is not used at the moment) 77*04fd306cSNickeau * @see DokuWiki_Syntax_Plugin::render() 78*04fd306cSNickeau */ 79*04fd306cSNickeau function render($format, Doku_Renderer $renderer, $data): bool 80*04fd306cSNickeau { 81*04fd306cSNickeau 82*04fd306cSNickeau return XmlTagProcessing::renderStaticEmptyTag($format, $renderer, $data, $this); 83*04fd306cSNickeau 84*04fd306cSNickeau } 85*04fd306cSNickeau 86*04fd306cSNickeau 87*04fd306cSNickeau} 88*04fd306cSNickeau 89