added a flush tag
authorFabien Potencier <fabien.potencier@gmail.com>
Wed, 21 Dec 2011 18:34:14 +0000 (19:34 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Wed, 21 Dec 2011 18:34:14 +0000 (19:34 +0100)
CHANGELOG
lib/Twig/Extension/Core.php
lib/Twig/Node/Flush.php [new file with mode: 0644]
lib/Twig/TokenParser/Flush.php [new file with mode: 0644]

index 192dca8..0a07631 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 * 1.5.0
 
+ * added a flash tag
  * added support for dynamically named filters and functions
  * added a dump function to help debugging templates
  * added a nl2br filter
index 78f0660..f60d705 100644 (file)
@@ -56,6 +56,7 @@ class Twig_Extension_Core extends Twig_Extension
             new Twig_TokenParser_From(),
             new Twig_TokenParser_Set(),
             new Twig_TokenParser_Spaceless(),
+            new Twig_TokenParser_Flush(),
         );
     }
 
diff --git a/lib/Twig/Node/Flush.php b/lib/Twig/Node/Flush.php
new file mode 100644 (file)
index 0000000..8f2ab9d
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2011 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Represents a flush node.
+ *
+ * @package    twig
+ * @author     Fabien Potencier <fabien@symfony.com>
+ */
+class Twig_Node_Flush extends Twig_Node
+{
+    public function __construct($lineno, $tag)
+    {
+        parent::__construct(array(), array(), $lineno, $tag);
+    }
+
+    /**
+     * Compiles the node to PHP.
+     *
+     * @param Twig_Compiler A Twig_Compiler instance
+     */
+    public function compile(Twig_Compiler $compiler)
+    {
+        $compiler
+            ->addDebugInfo($this)
+            ->write("flush();\n")
+        ;
+    }
+}
diff --git a/lib/Twig/TokenParser/Flush.php b/lib/Twig/TokenParser/Flush.php
new file mode 100644 (file)
index 0000000..4cf488c
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2011 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Flushes the output to the client.
+ *
+ * @see flush()
+ */
+class Twig_TokenParser_Flush extends Twig_TokenParser
+{
+    /**
+     * Parses a token and returns a node.
+     *
+     * @param Twig_Token $token A Twig_Token instance
+     *
+     * @return Twig_NodeInterface A Twig_NodeInterface instance
+     */
+    public function parse(Twig_Token $token)
+    {
+        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
+
+        return new Twig_Node_Flush($token->getLine(), $this->getTag());
+    }
+
+    /**
+     * Gets the tag name associated with this token parser.
+     *
+     * @param string The tag name
+     */
+    public function getTag()
+    {
+        return 'flush';
+    }
+}