You are here

public function Twig_Node_ForLoop::compile in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/twig/twig/lib/Twig/Node/ForLoop.php \Twig_Node_ForLoop::compile()

Compiles the node to PHP.

Parameters

Twig_Compiler $compiler A Twig_Compiler instance:

Overrides Twig_Node::compile

File

vendor/twig/twig/lib/Twig/Node/ForLoop.php, line 24

Class

Twig_Node_ForLoop
Internal node used by the for node.

Code

public function compile(Twig_Compiler $compiler) {
  if ($this
    ->getAttribute('else')) {
    $compiler
      ->write("\$context['_iterated'] = true;\n");
  }
  if ($this
    ->getAttribute('with_loop')) {
    $compiler
      ->write("++\$context['loop']['index0'];\n")
      ->write("++\$context['loop']['index'];\n")
      ->write("\$context['loop']['first'] = false;\n");
    if (!$this
      ->getAttribute('ifexpr')) {
      $compiler
        ->write("if (isset(\$context['loop']['length'])) {\n")
        ->indent()
        ->write("--\$context['loop']['revindex0'];\n")
        ->write("--\$context['loop']['revindex'];\n")
        ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n")
        ->outdent()
        ->write("}\n");
    }
  }
}