Dotclear

source: inc/libs/twig/Node/ForLoop.php @ 991:e42f791e0975

Revision 991:e42f791e0975, 1.6 KB checked in by Dsls <dsls@…>, 13 years ago (diff)

New twig branch. 1st step : add twig 1.11.1

Line 
1<?php
2
3/*
4 * This file is part of Twig.
5 *
6 * (c) 2011 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 * Internal node used by the for node.
14 *
15 * @package    twig
16 * @author     Fabien Potencier <fabien@symfony.com>
17 */
18class Twig_Node_ForLoop extends Twig_Node
19{
20    public function __construct($lineno, $tag = null)
21    {
22        parent::__construct(array(), array('with_loop' => false, 'ifexpr' => false, 'else' => false), $lineno, $tag);
23    }
24
25    /**
26     * Compiles the node to PHP.
27     *
28     * @param Twig_Compiler A Twig_Compiler instance
29     */
30    public function compile(Twig_Compiler $compiler)
31    {
32        if ($this->getAttribute('else')) {
33            $compiler->write("\$context['_iterated'] = true;\n");
34        }
35
36        if ($this->getAttribute('with_loop')) {
37            $compiler
38                ->write("++\$context['loop']['index0'];\n")
39                ->write("++\$context['loop']['index'];\n")
40                ->write("\$context['loop']['first'] = false;\n")
41            ;
42
43            if (!$this->getAttribute('ifexpr')) {
44                $compiler
45                    ->write("if (isset(\$context['loop']['length'])) {\n")
46                    ->indent()
47                    ->write("--\$context['loop']['revindex0'];\n")
48                    ->write("--\$context['loop']['revindex'];\n")
49                    ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n")
50                    ->outdent()
51                    ->write("}\n")
52                ;
53            }
54        }
55    }
56}
Note: See TracBrowser for help on using the repository browser.

Sites map