summaryrefslogtreecommitdiff
path: root/inc/contrib/Twig/Node/Expression/Name.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/contrib/Twig/Node/Expression/Name.php')
-rw-r--r--inc/contrib/Twig/Node/Expression/Name.php41
1 files changed, 41 insertions, 0 deletions
diff --git a/inc/contrib/Twig/Node/Expression/Name.php b/inc/contrib/Twig/Node/Expression/Name.php
new file mode 100644
index 00000000..fceda2b7
--- /dev/null
+++ b/inc/contrib/Twig/Node/Expression/Name.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ * (c) 2009 Armin Ronacher
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+class Twig_Node_Expression_Name extends Twig_Node_Expression
+{
+ public function __construct($name, $lineno)
+ {
+ parent::__construct(array(), array('name' => $name), $lineno);
+ }
+
+ public function compile(Twig_Compiler $compiler)
+ {
+ static $specialVars = array(
+ '_self' => '$this',
+ '_context' => '$context',
+ '_charset' => '$this->env->getCharset()',
+ );
+
+ $name = $this->getAttribute('name');
+
+ if ($this->hasAttribute('is_defined_test')) {
+ if (isset($specialVars[$name])) {
+ $compiler->repr(true);
+ } else {
+ $compiler->raw('array_key_exists(')->repr($name)->raw(', $context)');
+ }
+ } elseif (isset($specialVars[$name])) {
+ $compiler->raw($specialVars[$name]);
+ } else {
+ $compiler->raw(sprintf('$this->getContext($context, \'%s\')', $name));
+ }
+ }
+}