xref: /plugin/combo/syntax/xmlinlineemptytag.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
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