| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- <?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.
 -  */
 - 
 - /**
 -  * Imports blocks defined in another template into the current template.
 -  *
 -  * <pre>
 -  * {% extends "base.html" %}
 -  *
 -  * {% use "blocks.html" %}
 -  *
 -  * {% block title %}{% endblock %}
 -  * {% block content %}{% endblock %}
 -  * </pre>
 -  *
 -  * @see http://www.twig-project.org/doc/templates.html#horizontal-reuse for details.
 -  */
 - class Twig_TokenParser_Use 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)
 -     {
 -         $template = $this->parser->getExpressionParser()->parseExpression();
 - 
 -         if (!$template instanceof Twig_Node_Expression_Constant) {
 -             throw new Twig_Error_Syntax('The template references in a "use" statement must be a string.', $token->getLine());
 -         }
 - 
 -         $stream = $this->parser->getStream();
 - 
 -         $targets = array();
 -         if ($stream->test('with')) {
 -             $stream->next();
 - 
 -             do {
 -                 $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
 - 
 -                 $alias = $name;
 -                 if ($stream->test('as')) {
 -                     $stream->next();
 - 
 -                     $alias = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
 -                 }
 - 
 -                 $targets[$name] = new Twig_Node_Expression_Constant($alias, -1);
 - 
 -                 if (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ',')) {
 -                     break;
 -                 }
 - 
 -                 $stream->next();
 -             } while (true);
 -         }
 - 
 -         $stream->expect(Twig_Token::BLOCK_END_TYPE);
 - 
 -         $this->parser->addTrait(new Twig_Node(array('template' => $template, 'targets' => new Twig_Node($targets))));
 - 
 -         return null;
 -     }
 - 
 -     /**
 -      * Gets the tag name associated with this token parser.
 -      *
 -      * @param string The tag name
 -      */
 -     public function getTag()
 -     {
 -         return 'use';
 -     }
 - }
 
 
  |