PluginProbe
Elementor Website Builder – more than just a page builder / 3.28.0-dev3
Elementor Website Builder – more than just a page builder v3.28.0-dev3
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / vendor_prefixed / twig / src / Node / SetNode.php

SetNode.php in Elementor Website Builder – more than just a page builder 3.28.0-dev3, at vendor_prefixed/twig/src/Node/SetNode.php

83 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * This file is part of Twig.
5 *
6 * (c) Fabien Potencier
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace ElementorDeps\Twig\Node;
12
13 use ElementorDeps\Twig\Attribute\YieldReady;
14 use ElementorDeps\Twig\Compiler;
15 use ElementorDeps\Twig\Node\Expression\ConstantExpression;
16 /**
17 * Represents a set node.
18 *
19 * @author Fabien Potencier <fabien@symfony.com>
20 */
21 #[\Twig\Attribute\YieldReady]
22 class SetNode extends Node implements NodeCaptureInterface
23 {
24 public function __construct(bool $capture, Node $names, Node $values, int $lineno, ?string $tag = null)
25 {
26 /*
27 * Optimizes the node when capture is used for a large block of text.
28 *
29 * {% set foo %}foo{% endset %} is compiled to $context['foo'] = new Twig\Markup("foo");
30 */
31 $safe = \false;
32 if ($capture) {
33 $safe = \true;
34 if ($values instanceof TextNode) {
35 $values = new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine());
36 $capture = \false;
37 } else {
38 $values = new CaptureNode($values, $values->getTemplateLine());
39 }
40 }
41 parent::__construct(['names' => $names, 'values' => $values], ['capture' => $capture, 'safe' => $safe], $lineno, $tag);
42 }
43 public function compile(Compiler $compiler) : void
44 {
45 $compiler->addDebugInfo($this);
46 if (\count($this->getNode('names')) > 1) {
47 $compiler->write('[');
48 foreach ($this->getNode('names') as $idx => $node) {
49 if ($idx) {
50 $compiler->raw(', ');
51 }
52 $compiler->subcompile($node);
53 }
54 $compiler->raw(']');
55 } else {
56 $compiler->subcompile($this->getNode('names'), \false);
57 }
58 $compiler->raw(' = ');
59 if ($this->getAttribute('capture')) {
60 $compiler->subcompile($this->getNode('values'));
61 } else {
62 if (\count($this->getNode('names')) > 1) {
63 $compiler->write('[');
64 foreach ($this->getNode('values') as $idx => $value) {
65 if ($idx) {
66 $compiler->raw(', ');
67 }
68 $compiler->subcompile($value);
69 }
70 $compiler->raw(']');
71 } else {
72 if ($this->getAttribute('safe')) {
73 $compiler->raw("('' === \$tmp = ")->subcompile($this->getNode('values'))->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())");
74 } else {
75 $compiler->subcompile($this->getNode('values'));
76 }
77 }
78 $compiler->raw(';');
79 }
80 $compiler->raw("\n");
81 }
82 }
83