X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Ftwig%2Ftwig%2Flib%2FTwig%2FTokenParser%2FBlock.php;fp=vendor%2Ftwig%2Ftwig%2Flib%2FTwig%2FTokenParser%2FBlock.php;h=9dae2b9044485551f5f65ca2437f34e7c75ca40e;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Block.php b/vendor/twig/twig/lib/Twig/TokenParser/Block.php
new file mode 100644
index 000000000..9dae2b904
--- /dev/null
+++ b/vendor/twig/twig/lib/Twig/TokenParser/Block.php
@@ -0,0 +1,71 @@
+
+ * {% block head %}
+ *
+ *
{% block title %}{% endblock %} - My Webpage
+ * {% endblock %}
+ *
+ *
+ * @final
+ */
+class Twig_TokenParser_Block extends Twig_TokenParser
+{
+ public function parse(Twig_Token $token)
+ {
+ $lineno = $token->getLine();
+ $stream = $this->parser->getStream();
+ $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
+ if ($this->parser->hasBlock($name)) {
+ throw new Twig_Error_Syntax(sprintf("The block '%s' has already been defined line %d.", $name, $this->parser->getBlock($name)->getTemplateLine()), $stream->getCurrent()->getLine(), $stream->getSourceContext());
+ }
+ $this->parser->setBlock($name, $block = new Twig_Node_Block($name, new Twig_Node(array()), $lineno));
+ $this->parser->pushLocalScope();
+ $this->parser->pushBlockStack($name);
+
+ if ($stream->nextIf(Twig_Token::BLOCK_END_TYPE)) {
+ $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
+ if ($token = $stream->nextIf(Twig_Token::NAME_TYPE)) {
+ $value = $token->getValue();
+
+ if ($value != $name) {
+ throw new Twig_Error_Syntax(sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext());
+ }
+ }
+ } else {
+ $body = new Twig_Node(array(
+ new Twig_Node_Print($this->parser->getExpressionParser()->parseExpression(), $lineno),
+ ));
+ }
+ $stream->expect(Twig_Token::BLOCK_END_TYPE);
+
+ $block->setNode('body', $body);
+ $this->parser->popBlockStack();
+ $this->parser->popLocalScope();
+
+ return new Twig_Node_BlockReference($name, $lineno, $this->getTag());
+ }
+
+ public function decideBlockEnd(Twig_Token $token)
+ {
+ return $token->test('endblock');
+ }
+
+ public function getTag()
+ {
+ return 'block';
+ }
+}