moved some logic from the sandbox node visitor to the sandbox node
authorFabien Potencier <fabien.potencier@gmail.com>
Thu, 18 Oct 2012 07:25:09 +0000 (09:25 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Thu, 18 Oct 2012 11:55:03 +0000 (13:55 +0200)
lib/Twig/Node/Sandbox.php
lib/Twig/NodeVisitor/Sandbox.php

index cbfcb41..fbafd99 100644 (file)
@@ -20,6 +20,19 @@ class Twig_Node_Sandbox extends Twig_Node
     public function __construct(Twig_NodeInterface $body, $lineno, $tag = null)
     {
         parent::__construct(array('body' => $body), array(), $lineno, $tag);
+
+        // in a sandbox tag, only include tags are allowed
+        if (!$this->getNode('body') instanceof Twig_Node_Include) {
+            foreach ($this->getNode('body') as $node) {
+                if ($node instanceof Twig_Node_Text && ctype_space($node->getAttribute('data'))) {
+                    continue;
+                }
+
+                if (!$node instanceof Twig_Node_Include) {
+                    throw new Twig_Error_Syntax('Only "include" tags are allowed within a "sandbox" section', $node->getLine());
+                }
+            }
+        }
     }
 
     /**
index 61ef0c6..1957f8a 100644 (file)
@@ -32,19 +32,6 @@ class Twig_NodeVisitor_Sandbox implements Twig_NodeVisitorInterface
      */
     public function enterNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
-        // in a sandbox tag, only include tags are allowed
-        if ($node instanceof Twig_Node_Sandbox && !$node->getNode('body') instanceof Twig_Node_Include) {
-            foreach ($node->getNode('body') as $n) {
-                if ($n instanceof Twig_Node_Text && ctype_space($n->getAttribute('data'))) {
-                    continue;
-                }
-
-                if (!$n instanceof Twig_Node_Include) {
-                    throw new Twig_Error_Syntax('Only "include" tags are allowed within a "sandbox" section', $n->getLine());
-                }
-            }
-        }
-
         if ($node instanceof Twig_Node_Module) {
             $this->inAModule = true;
             $this->tags = array();