a51a4ba133b3fed3cf7e34a1b6894b3fed5a22d8
[yaffs-website] / vendor / twig / twig / lib / Twig / Node / Expression / Test / Constant.php
1 <?php
2
3 /*
4  * This file is part of Twig.
5  *
6  * (c) Fabien Potencier
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 /**
13  * Checks if a variable is the exact same value as a constant.
14  *
15  * <pre>
16  *  {% if post.status is constant('Post::PUBLISHED') %}
17  *    the status attribute is exactly the same as Post::PUBLISHED
18  *  {% endif %}
19  * </pre>
20  *
21  * @author Fabien Potencier <fabien@symfony.com>
22  */
23 class Twig_Node_Expression_Test_Constant extends Twig_Node_Expression_Test
24 {
25     public function compile(Twig_Compiler $compiler)
26     {
27         $compiler
28             ->raw('(')
29             ->subcompile($this->getNode('node'))
30             ->raw(' === constant(')
31         ;
32
33         if ($this->getNode('arguments')->hasNode(1)) {
34             $compiler
35                 ->raw('get_class(')
36                 ->subcompile($this->getNode('arguments')->getNode(1))
37                 ->raw(')."::".')
38             ;
39         }
40
41         $compiler
42             ->subcompile($this->getNode('arguments')->getNode(0))
43             ->raw('))')
44         ;
45     }
46 }
47
48 class_alias('Twig_Node_Expression_Test_Constant', 'Twig\Node\Expression\Test\ConstantTest', false);