removed the 'without loop' attribute for the 'for' tag
authorFabien Potencier <fabien.potencier@gmail.com>
Mon, 13 Dec 2010 14:59:12 +0000 (15:59 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Mon, 13 Dec 2010 14:59:12 +0000 (15:59 +0100)
CHANGELOG
doc/02-Twig-for-Template-Designers.markdown
lib/Twig/Node/For.php
lib/Twig/TokenParser/For.php
test/Twig/Tests/Node/ForTest.php

index fe2e680..6f49c2d 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,8 @@ Backward incompatibilities:
  * The Escaper extension is enabled by default, which means that all displayed
    variables are now automatically escaped. You can revert to the previous
    behavior by removing the extension via $env->removeExtension('escaper').
+ * removed the "without loop" attribute for the "for" tag (not needed anymore
+   as the Optimizer take care of that for most cases)
 
 Changes:
 
index dc9d53e..f9e0236 100644 (file)
@@ -485,9 +485,7 @@ If you need a step different from 1, you can use the `range` filter instead:
       * {{ i }}
     {% endfor %}
 
-Inside of a `for` loop block you can access some special variables (if you
-don't need them, you can add `without loop` at the end of the `for` statement
-for a small speed boost):
+Inside of a `for` loop block you can access some special variables:
 
 | Variable              | Description
 | --------------------- | -------------------------------------------------------------
index 38ad626..4580c2f 100644 (file)
@@ -18,9 +18,9 @@
  */
 class Twig_Node_For extends Twig_Node
 {
-    public function __construct(Twig_Node_Expression_AssignName $keyTarget, Twig_Node_Expression_AssignName $valueTarget, Twig_Node_Expression $seq, Twig_NodeInterface $body, Twig_NodeInterface $else = null, $withLoop = false, Twig_Node_Expression $joinedBy = null, $lineno, $tag = null)
+    public function __construct(Twig_Node_Expression_AssignName $keyTarget, Twig_Node_Expression_AssignName $valueTarget, Twig_Node_Expression $seq, Twig_NodeInterface $body, Twig_NodeInterface $else = null, Twig_Node_Expression $joinedBy = null, $lineno, $tag = null)
     {
-        parent::__construct(array('key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body, 'else' => $else, 'joined_with' => $joinedBy), array('with_loop' => $withLoop), $lineno, $tag);
+        parent::__construct(array('key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body, 'else' => $else, 'joined_with' => $joinedBy), array('with_loop' => true), $lineno, $tag);
     }
 
     /**
index 42b71af..6f4477b 100644 (file)
@@ -25,13 +25,6 @@ class Twig_TokenParser_For extends Twig_TokenParser
         $this->parser->getStream()->expect(Twig_Token::OPERATOR_TYPE, 'in');
         $seq = $this->parser->getExpressionParser()->parseExpression();
 
-        $withLoop = true;
-        if ($this->parser->getStream()->test('without')) {
-            $this->parser->getStream()->next();
-            $this->parser->getStream()->expect('loop');
-            $withLoop = false;
-        }
-
         $joinedBy = null;
         if ($this->parser->getStream()->test('joined')) {
             $this->parser->getStream()->next();
@@ -57,7 +50,7 @@ class Twig_TokenParser_For extends Twig_TokenParser
             $valueTarget = $targets->getNode(0);
         }
 
-        return new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, $withLoop, $joinedBy, $lineno, $this->getTag());
+        return new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, $joinedBy, $lineno, $this->getTag());
     }
 
     public function decideForFork($token)
index 71144f8..06fe129 100644 (file)
@@ -23,8 +23,8 @@ class Twig_Tests_Node_ForTest extends Twig_Tests_Node_TestCase
         $seq = new Twig_Node_Expression_Name('items', 0);
         $body = new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 0), 0);
         $else = null;
-        $withLoop = false;
-        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, $withLoop, null, 0);
+        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, null, 0);
+        $node->setAttribute('with_loop', false);
 
         $this->assertEquals($keyTarget, $node->getNode('key_target'));
         $this->assertEquals($valueTarget, $node->getNode('value_target'));
@@ -32,10 +32,9 @@ class Twig_Tests_Node_ForTest extends Twig_Tests_Node_TestCase
         $this->assertEquals($body, $node->getNode('body'));
         $this->assertEquals(null, $node->getNode('else'));
 
-        $this->assertEquals($withLoop, $node->getAttribute('with_loop'));
-
         $else = new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 0), 0);
-        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, $withLoop, null, 0);
+        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, null, 0);
+        $node->setAttribute('with_loop', false);
         $this->assertEquals($else, $node->getNode('else'));
     }
 
@@ -57,8 +56,8 @@ class Twig_Tests_Node_ForTest extends Twig_Tests_Node_TestCase
         $seq = new Twig_Node_Expression_Name('items', 0);
         $body = new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 0), 0);
         $else = null;
-        $withLoop = false;
-        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, $withLoop, null, 0);
+        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, null, 0);
+        $node->setAttribute('with_loop', false);
 
         $tests[] = array($node, <<<EOF
 \$context['_parent'] = (array) \$context;
@@ -77,9 +76,9 @@ EOF
         $seq = new Twig_Node_Expression_Name('values', 0);
         $body = new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 0), 0);
         $else = null;
-        $withLoop = true;
         $joinedBy = new Twig_Node_Expression_Constant(', ', 0);
-        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, $withLoop, $joinedBy, 0);
+        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, $joinedBy, 0);
+        $node->setAttribute('with_loop', true);
 
         $tests[] = array($node, <<<EOF
 \$context['_parent'] = (array) \$context;
@@ -126,8 +125,8 @@ EOF
         $seq = new Twig_Node_Expression_Name('values', 0);
         $body = new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 0), 0);
         $else = new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 0), 0);
-        $withLoop = true;
-        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, $withLoop, null, 0);
+        $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $body, $else, null, 0);
+        $node->setAttribute('with_loop', true);
 
         $tests[] = array($node, <<<EOF
 \$context['_parent'] = (array) \$context;