blob: 0632ba747540c04f44ea6f951ba2ae0a376a86db [file] [log] [blame]
Matthias Andreas Benkard12a57352021-12-28 18:02:04 +01001<?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): void
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}