Added nodes representing local variables
authorArnaud Le Blanc <arnaud.lb@gmail.com>
Thu, 23 Dec 2010 21:07:22 +0000 (22:07 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Thu, 30 Dec 2010 08:31:08 +0000 (09:31 +0100)
Allows to use local PHP variables as temporary variables in compiled
templates

lib/Twig/Node/Expression/AssignLocalName.php [new file with mode: 0644]
lib/Twig/Node/Expression/LocalName.php [new file with mode: 0644]

diff --git a/lib/Twig/Node/Expression/AssignLocalName.php b/lib/Twig/Node/Expression/AssignLocalName.php
new file mode 100644 (file)
index 0000000..ff9f6a1
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ * (c) 2010 Arnaud Le Blanc
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Represents a local private variable.
+ * 
+ * Such variables are not visible from templates.
+ *
+ * @package    twig
+ * @author     Arnaud Le Blanc <arnaud.lb@gmail.com>
+ */
+class Twig_Node_Expression_AssignLocalName extends Twig_Node_Expression_LocalName
+{
+}
diff --git a/lib/Twig/Node/Expression/LocalName.php b/lib/Twig/Node/Expression/LocalName.php
new file mode 100644 (file)
index 0000000..0601063
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ * (c) 2010 Arnaud Le Blanc
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Represents a local private variable.
+ *
+ * Such variables are not visible from templates.
+ *
+ * @package    twig
+ * @author     Arnaud Le Blanc <arnaud.lb@gmail.com>
+ */
+class Twig_Node_Expression_LocalName extends Twig_Node_Expression
+{
+    static protected $counter = 0;
+
+    public function __construct($name = null, $lineno = null)
+    {
+        if (null === $name) {
+            $uniq = self::$counter++;
+            $name = '__' . $uniq;
+        }
+
+        parent::__construct(array(), array('name' => $name), $lineno);
+    }
+
+    public function compile($compiler)
+    {
+        $compiler->raw('$' . $this->getAttribute('name'));
+    }
+}
+