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