1<?php
2
3/*
4 * This file is part of Twig.
5 *
6 * (c) Fabien Potencier
7 * (c) Armin Ronacher
8 *
9 * For the full copyright and license information, please view the LICENSE
10 * file that was distributed with this source code.
11 */
12
13namespace Twig\Node;
14
15use Twig\Compiler;
16
17/**
18 * Represents a block node.
19 *
20 * @author Fabien Potencier <fabien@symfony.com>
21 */
22class BlockNode extends Node
23{
24    public function __construct(string $name, Node $body, int $lineno, string $tag = null)
25    {
26        parent::__construct(['body' => $body], ['name' => $name], $lineno, $tag);
27    }
28
29    public function compile(Compiler $compiler)
30    {
31        $compiler
32            ->addDebugInfo($this)
33            ->write(sprintf("public function block_%s(\$context, array \$blocks = [])\n", $this->getAttribute('name')), "{\n")
34            ->indent()
35            ->write("\$macros = \$this->macros;\n")
36        ;
37
38        $compiler
39            ->subcompile($this->getNode('body'))
40            ->outdent()
41            ->write("}\n\n")
42        ;
43    }
44}
45
46class_alias('Twig\Node\BlockNode', 'Twig_Node_Block');
47