1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap; 4*04fd306cSNickeau 5*04fd306cSNickeau 6*04fd306cSNickeauuse syntax_plugin_combo_variable; 7*04fd306cSNickeau 8*04fd306cSNickeauclass PipelineTag 9*04fd306cSNickeau{ 10*04fd306cSNickeau 11*04fd306cSNickeau 12*04fd306cSNickeau public const CANONICAL = PipelineTag::TAG; 13*04fd306cSNickeau public const TAG = "pipeline"; 14*04fd306cSNickeau 15*04fd306cSNickeau public static function processExit(\Doku_Handler $handler) 16*04fd306cSNickeau { 17*04fd306cSNickeau $callstack = CallStack::createFromHandler($handler); 18*04fd306cSNickeau $openingCall = $callstack->moveToPreviousCorrespondingOpeningCall(); 19*04fd306cSNickeau $script = ""; 20*04fd306cSNickeau while ($actual = $callstack->next()) { 21*04fd306cSNickeau /** 22*04fd306cSNickeau * Pipeline is the only inline tag that 23*04fd306cSNickeau * should be protected 24*04fd306cSNickeau * As it's deprecated we don't create a special 25*04fd306cSNickeau * syntax plugin for it 26*04fd306cSNickeau * We just do this hack where we capture the double quote opening 27*04fd306cSNickeau */ 28*04fd306cSNickeau $actualName = $actual->getTagName(); 29*04fd306cSNickeau switch ($actualName) { 30*04fd306cSNickeau case "doublequoteopening": 31*04fd306cSNickeau case "doublequoteclosing": 32*04fd306cSNickeau $script .= '"'; 33*04fd306cSNickeau continue 2; 34*04fd306cSNickeau case "xmlinlinetag": 35*04fd306cSNickeau $script .= $actual->getCapturedContent(); 36*04fd306cSNickeau continue 2; 37*04fd306cSNickeau default: 38*04fd306cSNickeau LogUtility::warning("The content tag with the name ($actualName) is unknown, the captured content may be not good.",self::CANONICAL); 39*04fd306cSNickeau $script .= $actual->getCapturedContent(); 40*04fd306cSNickeau 41*04fd306cSNickeau } 42*04fd306cSNickeau 43*04fd306cSNickeau } 44*04fd306cSNickeau $openingCall->addAttribute(PluginUtility::PAYLOAD, $script); 45*04fd306cSNickeau $callstack->deleteAllCallsAfter($openingCall); 46*04fd306cSNickeau 47*04fd306cSNickeau } 48*04fd306cSNickeau 49*04fd306cSNickeau public static function renderEnterXhtml(TagAttributes $tagAttributes): string 50*04fd306cSNickeau { 51*04fd306cSNickeau $pipelineWithPossibleVariableExpression = $tagAttributes->getValue(PluginUtility::PAYLOAD); 52*04fd306cSNickeau $pipelineExpression = syntax_plugin_combo_variable::replaceVariablesWithValuesFromContext($pipelineWithPossibleVariableExpression); 53*04fd306cSNickeau try { 54*04fd306cSNickeau return PipelineUtility::execute($pipelineExpression); 55*04fd306cSNickeau } catch (ExceptionBadSyntax $e) { 56*04fd306cSNickeau return LogUtility::wrapInRedForHtml($e->getMessage()); 57*04fd306cSNickeau } 58*04fd306cSNickeau 59*04fd306cSNickeau 60*04fd306cSNickeau } 61*04fd306cSNickeau} 62