xref: /plugin/combo/ComboStrap/MarkupRenderUtility.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau/**
3*04fd306cSNickeau * Copyright (c) 2020. ComboStrap, Inc. and its affiliates. All Rights Reserved.
4*04fd306cSNickeau *
5*04fd306cSNickeau * This source code is licensed under the GPL license found in the
6*04fd306cSNickeau * COPYING  file in the root directory of this source tree.
7*04fd306cSNickeau *
8*04fd306cSNickeau * @license  GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html)
9*04fd306cSNickeau * @author   ComboStrap <support@combostrap.com>
10*04fd306cSNickeau *
11*04fd306cSNickeau */
12*04fd306cSNickeau
13*04fd306cSNickeaunamespace ComboStrap;
14*04fd306cSNickeau
15*04fd306cSNickeau
16*04fd306cSNickeauuse dokuwiki\Extension\SyntaxPlugin;
17*04fd306cSNickeauuse PHPUnit\Exception;
18*04fd306cSNickeau
19*04fd306cSNickeauclass MarkupRenderUtility
20*04fd306cSNickeau{
21*04fd306cSNickeau
22*04fd306cSNickeau    /**
23*04fd306cSNickeau     * @param $content
24*04fd306cSNickeau     * @param bool $strip
25*04fd306cSNickeau     * @return string
26*04fd306cSNickeau     * @throws ExceptionCompile
27*04fd306cSNickeau     */
28*04fd306cSNickeau    public static function renderText2XhtmlAndStripPEventually($content, bool $strip = true): string
29*04fd306cSNickeau    {
30*04fd306cSNickeau
31*04fd306cSNickeau        return FetcherMarkup::confRoot()
32*04fd306cSNickeau            ->setRequestedMarkupString($content)
33*04fd306cSNickeau            ->setDeleteRootBlockElement($strip)
34*04fd306cSNickeau            ->setRequestedContextPathWithDefault()
35*04fd306cSNickeau            ->setRequestedMimeToXhtml()
36*04fd306cSNickeau            ->setIsStandAloneCodeExecution(true)
37*04fd306cSNickeau            ->build()
38*04fd306cSNickeau            ->getFetchString();
39*04fd306cSNickeau
40*04fd306cSNickeau    }
41*04fd306cSNickeau
42*04fd306cSNickeau    /**
43*04fd306cSNickeau     * @param $pageContent - the text (not the id)
44*04fd306cSNickeau     * @param bool $stripOpenAndEnd - to avoid the p element in test rendering
45*04fd306cSNickeau     * @return array
46*04fd306cSNickeau     */
47*04fd306cSNickeau    public static function getInstructionsAndStripPEventually($pageContent, bool $stripOpenAndEnd = true): array
48*04fd306cSNickeau    {
49*04fd306cSNickeau
50*04fd306cSNickeau        $markupRenderer = FetcherMarkup::confRoot()
51*04fd306cSNickeau            ->setDeleteRootBlockElement($stripOpenAndEnd)
52*04fd306cSNickeau            ->setRequestedMarkupString($pageContent)
53*04fd306cSNickeau            ->setRequestedMimeToInstructions()
54*04fd306cSNickeau            ->setRequestedContextPathWithDefault()
55*04fd306cSNickeau            ->build();
56*04fd306cSNickeau
57*04fd306cSNickeau        return $markupRenderer->getInstructions();
58*04fd306cSNickeau
59*04fd306cSNickeau
60*04fd306cSNickeau    }
61*04fd306cSNickeau
62*04fd306cSNickeau    /**
63*04fd306cSNickeau     * @param $pageId
64*04fd306cSNickeau     * @return string
65*04fd306cSNickeau     * @throws ExceptionCompile
66*04fd306cSNickeau     */
67*04fd306cSNickeau    public
68*04fd306cSNickeau    static function renderId2Xhtml($pageId): string
69*04fd306cSNickeau    {
70*04fd306cSNickeau
71*04fd306cSNickeau        $wikiPath = WikiPath::createMarkupPathFromId($pageId);
72*04fd306cSNickeau        return FetcherMarkup::confChild()
73*04fd306cSNickeau            ->setRequestedExecutingPath($wikiPath)
74*04fd306cSNickeau            ->setRequestedMimeToXhtml()
75*04fd306cSNickeau            ->build()
76*04fd306cSNickeau            ->getFetchString();
77*04fd306cSNickeau
78*04fd306cSNickeau
79*04fd306cSNickeau    }
80*04fd306cSNickeau
81*04fd306cSNickeau    /**
82*04fd306cSNickeau     * @param $callStackHeaderInstructions
83*04fd306cSNickeau     * @param $contextData - the context data if any
84*04fd306cSNickeau     * @return string|null
85*04fd306cSNickeau     * @throws ExceptionCompile
86*04fd306cSNickeau     */
87*04fd306cSNickeau    public static function renderInstructionsToXhtml($callStackHeaderInstructions, array $contextData = null): string
88*04fd306cSNickeau    {
89*04fd306cSNickeau
90*04fd306cSNickeau        $builder = FetcherMarkup::confChild()
91*04fd306cSNickeau            ->setRequestedInstructions($callStackHeaderInstructions)
92*04fd306cSNickeau            ->setIsDocument(false)
93*04fd306cSNickeau            ->setRequestedMimeToXhtml();
94*04fd306cSNickeau        if ($contextData !== null) {
95*04fd306cSNickeau            $builder->setContextData($contextData);
96*04fd306cSNickeau        }
97*04fd306cSNickeau        $fetcherMarkup = $builder->build();
98*04fd306cSNickeau        $fetchString = $fetcherMarkup->getFetchString();
99*04fd306cSNickeau        return $fetchString;
100*04fd306cSNickeau    }
101*04fd306cSNickeau
102*04fd306cSNickeau    /**
103*04fd306cSNickeau     * @throws ExceptionCompile
104*04fd306cSNickeau     */
105*04fd306cSNickeau    public static function renderInstructionsToXhtmlFromPage($callStackHeaderInstructions, MarkupPath $renderingPageId): string
106*04fd306cSNickeau    {
107*04fd306cSNickeau        return self::renderInstructionsToXhtml($callStackHeaderInstructions, $renderingPageId->getMetadataForRendering());
108*04fd306cSNickeau    }
109*04fd306cSNickeau
110*04fd306cSNickeau
111*04fd306cSNickeau}
112