Version 1
[yaffs-website] / vendor / twig / twig / lib / Twig / TokenParser / Filter.php
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Filter.php b/vendor/twig/twig/lib/Twig/TokenParser/Filter.php
new file mode 100644 (file)
index 0000000..1cdc0dd
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Filters a section of a template by applying filters.
+ *
+ * <pre>
+ * {% filter upper %}
+ *  This text becomes uppercase
+ * {% endfilter %}
+ * </pre>
+ *
+ * @final
+ */
+class Twig_TokenParser_Filter extends Twig_TokenParser
+{
+    public function parse(Twig_Token $token)
+    {
+        $name = $this->parser->getVarName();
+        $ref = new Twig_Node_Expression_BlockReference(new Twig_Node_Expression_Constant($name, $token->getLine()), null, $token->getLine(), $this->getTag());
+
+        $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag());
+        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
+
+        $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
+        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
+
+        $block = new Twig_Node_Block($name, $body, $token->getLine());
+        $this->parser->setBlock($name, $block);
+
+        return new Twig_Node_Print($filter, $token->getLine(), $this->getTag());
+    }
+
+    public function decideBlockEnd(Twig_Token $token)
+    {
+        return $token->test('endfilter');
+    }
+
+    public function getTag()
+    {
+        return 'filter';
+    }
+}