| Current Path : /home/zieirix/www/libraries/gantry5/src/classes/Gantry/Component/Twig/Node/ |
| Current File : /home/zieirix/www/libraries/gantry5/src/classes/Gantry/Component/Twig/Node/TwigNodeMarkdown.php |
<?php
/**
* @package Gantry5
* @author RocketTheme http://www.rockettheme.com
* @copyright Copyright (C) 2007 - 2021 RocketTheme, LLC
* @license Dual License: MIT or GNU/GPLv2 and later
*
* http://opensource.org/licenses/MIT
* http://www.gnu.org/licenses/gpl-2.0.html
*
* Gantry Framework code that extends GPL code is considered GNU/GPLv2 and later
*/
namespace Gantry\Component\Twig\Node;
use Twig\Compiler;
use Twig\Node\Node;
use Twig\Node\NodeOutputInterface;
/**
* Class TwigNodeMarkdown
* @package Gantry\Component\Twig\Node
*/
class TwigNodeMarkdown extends Node implements NodeOutputInterface
{
/**
* TwigNodeMarkdown constructor.
* @param Node $body
* @param int $lineno
* @param string $tag
*/
public function __construct(Node $body, $lineno, $tag = 'markdown')
{
parent::__construct(['body' => $body], [], $lineno, $tag);
}
/**
* Compiles the node to PHP.
*
* @param Compiler $compiler A Twig Compiler instance
*/
public function compile(Compiler $compiler)
{
$compiler
->addDebugInfo($this)
->write('ob_start();' . PHP_EOL)
->subcompile($this->getNode('body'))
->write('$content = ob_get_clean();' . PHP_EOL)
->write('preg_match("/^\s*/", $content, $matches);' . PHP_EOL)
->write('$lines = explode("\n", $content);' . PHP_EOL)
->write('$content = preg_replace(\'/^\' . $matches[0]. \'/\', "", $lines);' . PHP_EOL)
->write('$content = join("\n", $content);' . PHP_EOL)
->write('echo $this->env->getExtension(\'Gantry\Component\Twig\TwigExtension\')->markdownFunction($content);' . PHP_EOL);
}
}