1234567891011121314151617181920212223242526272829303132333435 |
- <?php
- /**
- * @package Grav.Common.Twig
- *
- * @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved.
- * @license MIT License; see LICENSE file for details.
- */
- namespace Grav\Common\Twig\Node;
- class TwigNodeMarkdown extends \Twig_Node implements \Twig_NodeOutputInterface
- {
- public function __construct(\Twig_Node $body, $lineno, $tag = 'markdown')
- {
- parent::__construct(['body' => $body], [], $lineno, $tag);
- }
- /**
- * Compiles the node to PHP.
- *
- * @param \Twig_Compiler A Twig_Compiler instance
- */
- public function compile(\Twig_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($content);' . PHP_EOL);
- }
- }
|