File: /var/www/payments-gateway/vendor/symfony/twig-bridge/Node/DumpNode.php
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bridge\Twig\Node;
use Twig\Attribute\YieldReady;
use Twig\Compiler;
use Twig\Node\Expression\Variable\LocalVariable;
use Twig\Node\Node;
/**
* @author Julien Galenski <julien.galenski@gmail.com>
*/
#[YieldReady]
final class DumpNode extends Node
{
public function __construct(
private LocalVariable|string $varPrefix,
?Node $values,
int $lineno,
) {
$nodes = [];
if (null !== $values) {
$nodes['values'] = $values;
}
parent::__construct($nodes, [], $lineno);
}
public function compile(Compiler $compiler): void
{
if ($this->varPrefix instanceof LocalVariable) {
$varPrefix = $this->varPrefix->getAttribute('name');
} else {
$varPrefix = $this->varPrefix;
}
$compiler
->write("if (\$this->env->isDebug()) {\n")
->indent();
if (!$this->hasNode('values')) {
// remove embedded templates (macros) from the context
$compiler
->write(\sprintf('$%svars = [];'."\n", $varPrefix))
->write(\sprintf('foreach ($context as $%1$skey => $%1$sval) {'."\n", $varPrefix))
->indent()
->write(\sprintf('if (!$%sval instanceof \Twig\Template) {'."\n", $varPrefix))
->indent()
->write(\sprintf('$%1$svars[$%1$skey] = $%1$sval;'."\n", $varPrefix))
->outdent()
->write("}\n")
->outdent()
->write("}\n")
->addDebugInfo($this)
->write(\sprintf('\Symfony\Component\VarDumper\VarDumper::dump($%svars);'."\n", $varPrefix));
} elseif (($values = $this->getNode('values')) && 1 === $values->count()) {
$compiler
->addDebugInfo($this)
->write('\Symfony\Component\VarDumper\VarDumper::dump(')
->subcompile($values->getNode(0))
->raw(");\n");
} else {
$compiler
->addDebugInfo($this)
->write('\Symfony\Component\VarDumper\VarDumper::dump(['."\n")
->indent();
foreach ($values as $node) {
$compiler->write('');
if ($node->hasAttribute('name')) {
$compiler
->string($node->getAttribute('name'))
->raw(' => ');
}
$compiler
->subcompile($node)
->raw(",\n");
}
$compiler
->outdent()
->write("]);\n");
}
$compiler
->outdent()
->write("}\n");
}
}