shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

Include.php (1601B)


      1 <?php
      2 
      3 /*
      4  * This file is part of Twig.
      5  *
      6  * (c) 2009 Fabien Potencier
      7  * (c) 2009 Armin Ronacher
      8  *
      9  * For the full copyright and license information, please view the LICENSE
     10  * file that was distributed with this source code.
     11  */
     12 
     13 /**
     14  * Includes a template.
     15  *
     16  * <pre>
     17  *   {% include 'header.html' %}
     18  *     Body
     19  *   {% include 'footer.html' %}
     20  * </pre>
     21  */
     22 class Twig_TokenParser_Include extends Twig_TokenParser
     23 {
     24     public function parse(Twig_Token $token)
     25     {
     26         $expr = $this->parser->getExpressionParser()->parseExpression();
     27 
     28         list($variables, $only, $ignoreMissing) = $this->parseArguments();
     29 
     30         return new Twig_Node_Include($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag());
     31     }
     32 
     33     protected function parseArguments()
     34     {
     35         $stream = $this->parser->getStream();
     36 
     37         $ignoreMissing = false;
     38         if ($stream->nextIf(Twig_Token::NAME_TYPE, 'ignore')) {
     39             $stream->expect(Twig_Token::NAME_TYPE, 'missing');
     40 
     41             $ignoreMissing = true;
     42         }
     43 
     44         $variables = null;
     45         if ($stream->nextIf(Twig_Token::NAME_TYPE, 'with')) {
     46             $variables = $this->parser->getExpressionParser()->parseExpression();
     47         }
     48 
     49         $only = false;
     50         if ($stream->nextIf(Twig_Token::NAME_TYPE, 'only')) {
     51             $only = true;
     52         }
     53 
     54         $stream->expect(Twig_Token::BLOCK_END_TYPE);
     55 
     56         return array($variables, $only, $ignoreMissing);
     57     }
     58 
     59     public function getTag()
     60     {
     61         return 'include';
     62     }
     63 }