function SetNode::compile
Overrides Node::compile
File
-
vendor/
twig/ twig/ src/ Node/ SetNode.php, line 54
Class
- SetNode
- Represents a set node.
Namespace
Twig\NodeCode
public function compile(Compiler $compiler) : void {
$compiler->addDebugInfo($this);
if (\count($this->getNode('names')) > 1) {
$compiler->write('[');
foreach ($this->getNode('names') as $idx => $node) {
if ($idx) {
$compiler->raw(', ');
}
$compiler->subcompile($node);
}
$compiler->raw(']');
}
else {
$compiler->subcompile($this->getNode('names'), false);
}
$compiler->raw(' = ');
if ($this->getAttribute('capture')) {
$compiler->subcompile($this->getNode('values'));
}
else {
if (\count($this->getNode('names')) > 1) {
$compiler->write('[');
foreach ($this->getNode('values') as $idx => $value) {
if ($idx) {
$compiler->raw(', ');
}
$compiler->subcompile($value);
}
$compiler->raw(']');
}
else {
if ($this->getAttribute('safe')) {
if ($this->getNode('values') instanceof ConstantExpression) {
if ('' === $this->getNode('values')
->getAttribute('value')) {
$compiler->raw('""');
}
else {
$compiler->raw('new Markup(')
->subcompile($this->getNode('values'))
->raw(', $this->env->getCharset())');
}
}
else {
$compiler->raw("('' === \$tmp = ")
->subcompile($this->getNode('values'))
->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())");
}
}
else {
$compiler->subcompile($this->getNode('values'));
}
}
$compiler->raw(';');
}
$compiler->raw("\n");
}