You are here

public function Twig_NodeVisitor_Sandbox::enterNode in Translation template extractor 6.3

Called before child nodes are visited.

Parameters

Twig_NodeInterface $node The node to visit:

Twig_Environment $env The Twig environment instance:

Return value

Twig_NodeInterface The modified node

Overrides Twig_NodeVisitorInterface::enterNode

File

vendor/Twig/NodeVisitor/Sandbox.php, line 32

Class

Twig_NodeVisitor_Sandbox
Twig_NodeVisitor_Sandbox implements sandboxing.

Code

public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) {
  if ($node instanceof Twig_Node_Module) {
    $this->inAModule = true;
    $this->tags = array();
    $this->filters = array();
    $this->functions = array();
    return $node;
  }
  elseif ($this->inAModule) {

    // look for tags
    if ($node
      ->getNodeTag() && !isset($this->tags[$node
      ->getNodeTag()])) {
      $this->tags[$node
        ->getNodeTag()] = $node;
    }

    // look for filters
    if ($node instanceof Twig_Node_Expression_Filter && !isset($this->filters[$node
      ->getNode('filter')
      ->getAttribute('value')])) {
      $this->filters[$node
        ->getNode('filter')
        ->getAttribute('value')] = $node;
    }

    // look for functions
    if ($node instanceof Twig_Node_Expression_Function && !isset($this->functions[$node
      ->getAttribute('name')])) {
      $this->functions[$node
        ->getAttribute('name')] = $node;
    }

    // wrap print to check __toString() calls
    if ($node instanceof Twig_Node_Print) {
      return new Twig_Node_SandboxedPrint($node
        ->getNode('expr'), $node
        ->getLine(), $node
        ->getNodeTag());
    }
  }
  return $node;
}