d82edec770d0cd1dc2ef72cd8253909030be0f6c
[yaffs-website] / vendor / twig / twig / lib / Twig / Node / If.php
1 <?php
2
3 /*
4  * This file is part of Twig.
5  *
6  * (c) Fabien Potencier
7  * (c) Armin Ronacher
8  *
9  * For the full copyright and license information, please view the LICENSE
10  * file that was distributed with this source code.
11  */
12
13 /**
14  * Represents an if node.
15  *
16  * @author Fabien Potencier <fabien@symfony.com>
17  */
18 class Twig_Node_If extends Twig_Node
19 {
20     public function __construct(Twig_NodeInterface $tests, Twig_NodeInterface $else = null, $lineno, $tag = null)
21     {
22         $nodes = array('tests' => $tests);
23         if (null !== $else) {
24             $nodes['else'] = $else;
25         }
26
27         parent::__construct($nodes, array(), $lineno, $tag);
28     }
29
30     public function compile(Twig_Compiler $compiler)
31     {
32         $compiler->addDebugInfo($this);
33         for ($i = 0, $count = count($this->getNode('tests')); $i < $count; $i += 2) {
34             if ($i > 0) {
35                 $compiler
36                     ->outdent()
37                     ->write('} elseif (')
38                 ;
39             } else {
40                 $compiler
41                     ->write('if (')
42                 ;
43             }
44
45             $compiler
46                 ->subcompile($this->getNode('tests')->getNode($i))
47                 ->raw(") {\n")
48                 ->indent()
49                 ->subcompile($this->getNode('tests')->getNode($i + 1))
50             ;
51         }
52
53         if ($this->hasNode('else')) {
54             $compiler
55                 ->outdent()
56                 ->write("} else {\n")
57                 ->indent()
58                 ->subcompile($this->getNode('else'))
59             ;
60         }
61
62         $compiler
63             ->outdent()
64             ->write("}\n");
65     }
66 }
67
68 class_alias('Twig_Node_If', 'Twig\Node\IfNode', false);