12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?php
- /**
- * @package Grav\Common\Twig
- *
- * @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
- * @license MIT License; see LICENSE file for details.
- */
- namespace Grav\Common\Twig\Node;
- use Twig\Compiler;
- use Twig\Node\Node;
- use Twig\Node\NodeOutputInterface;
- 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(\'Grav\Common\Twig\TwigExtension\')->markdownFunction($context, $content);' . PHP_EOL);
- }
- }
|