xref: /plugin/combo/ComboStrap/Parser.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace ComboStrap;
4*04fd306cSNickeau
5*04fd306cSNickeauuse Doku_Handler;
6*04fd306cSNickeau
7*04fd306cSNickeauclass Parser
8*04fd306cSNickeau{
9*04fd306cSNickeau
10*04fd306cSNickeau
11*04fd306cSNickeau    /**
12*04fd306cSNickeau     * @param $markup - the markup
13*04fd306cSNickeau     * @return Doku_Handler - the handler
14*04fd306cSNickeau     */
15*04fd306cSNickeau    public static function parseMarkupToHandler($markup): Doku_Handler
16*04fd306cSNickeau    {
17*04fd306cSNickeau        global $ID;
18*04fd306cSNickeau        $keep = $ID;
19*04fd306cSNickeau        global $ACT;
20*04fd306cSNickeau        $keepAct = $ACT;
21*04fd306cSNickeau        if ($ID === null) {
22*04fd306cSNickeau            $ID = ExecutionContext::getActualOrCreateFromEnv()->getConfig()->getDefaultContextPath()->getWikiId();
23*04fd306cSNickeau        }
24*04fd306cSNickeau        try {
25*04fd306cSNickeau            /**
26*04fd306cSNickeau             * Fragment
27*04fd306cSNickeau             */
28*04fd306cSNickeau            $ACT = ExecutionContext::PREVIEW_ACTION;
29*04fd306cSNickeau            $modes = p_get_parsermodes();
30*04fd306cSNickeau            $handler = new Doku_Handler();
31*04fd306cSNickeau            $parser = new \dokuwiki\Parsing\Parser($handler);
32*04fd306cSNickeau
33*04fd306cSNickeau            //add modes to parser
34*04fd306cSNickeau            foreach ($modes as $mode) {
35*04fd306cSNickeau                $parser->addMode($mode['mode'], $mode['obj']);
36*04fd306cSNickeau            }
37*04fd306cSNickeau            $parser->parse($markup);
38*04fd306cSNickeau            return $handler;
39*04fd306cSNickeau        } finally {
40*04fd306cSNickeau            $ID = $keep;
41*04fd306cSNickeau            $ACT = $keepAct;
42*04fd306cSNickeau        }
43*04fd306cSNickeau    }
44*04fd306cSNickeau}
45