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