function EscaperNodeVisitor::leaveNode
Overrides NodeVisitorInterface::leaveNode
File
-
vendor/
twig/ twig/ src/ NodeVisitor/ EscaperNodeVisitor.php, line 68
Class
- EscaperNodeVisitor
- @author Fabien Potencier <fabien@symfony.com>
Namespace
Twig\NodeVisitorCode
public function leaveNode(Node $node, Environment $env) : ?Node {
if ($node instanceof ModuleNode) {
$this->defaultStrategy = false;
$this->safeVars = [];
$this->blocks = [];
}
elseif ($node instanceof FilterExpression) {
return $this->preEscapeFilterNode($node, $env);
}
elseif ($node instanceof PrintNode && false !== ($type = $this->needEscaping())) {
$expression = $node->getNode('expr');
if ($expression instanceof ConditionalExpression) {
$this->escapeConditional($expression, $env, $type);
}
else {
$node->setNode('expr', $this->escapeExpression($expression, $env, $type));
}
return $node;
}
if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) {
array_pop($this->statusStack);
}
elseif ($node instanceof BlockReferenceNode) {
$this->blocks[$node->getAttribute('name')] = $this->needEscaping();
}
return $node;
}