added some helper method to build common nodes more easily (experimental)
authorFabien Potencier <fabien.potencier@gmail.com>
Thu, 10 Jun 2010 08:51:31 +0000 (10:51 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Thu, 10 Jun 2010 08:51:31 +0000 (10:51 +0200)
lib/Twig/SimpleTokenParser.php

index 42e78da..64d4c86 100644 (file)
@@ -45,6 +45,43 @@ abstract class Twig_SimpleTokenParser extends Twig_TokenParser
      */
     abstract protected function getNode(array $values, $line);
 
+    protected function getAttribute($node, $attribute, $arguments = array(), $line = -1)
+    {
+        return new \Twig_Node_Expression_GetAttr(
+            $node instanceof Twig_NodeInterface ? $node : new \Twig_Node_Expression_Name($node, $line),
+            $attribute instanceof Twig_NodeInterface ? $attribute : new \Twig_Node_Expression_Constant($attribute, $line),
+            $arguments instanceof Twig_NodeInterface ? $arguments : new \Twig_Node($arguments),
+            \Twig_Node_Expression_GetAttr::TYPE_ANY,
+            $line
+        );
+    }
+
+    protected function markAsSafe(Twig_NodeInterface $node, $line = -1)
+    {
+        return new \Twig_Node_Expression_Filter(
+            $node,
+            new \Twig_Node(array(new \Twig_Node_Expression_Constant('safe', $line), new \Twig_Node())),
+            $line
+        );
+    }
+
+    protected function output(Twig_NodeInterface $node, $line = -1)
+    {
+        return new \Twig_Node_Print($node, $line);
+    }
+
+    protected function getNodeValues(array $values)
+    {
+        $nodes = array();
+        foreach ($values as $value) {
+            if ($value instanceof \Twig_NodeInterface) {
+                $nodes[] = $value;
+            }
+        }
+
+        return $nodes;
+    }
+
     static public function parseGrammar($str, $main = true)
     {
         static $cursor;