[ Index ]

PHP Cross Reference of phpBB-3.1.12-deutsch

title

Body

[close]

/vendor/twig/twig/lib/Twig/TokenParser/ -> Set.php (source)

   1  <?php
   2  
   3  /*
   4   * This file is part of Twig.
   5   *
   6   * (c) 2009 Fabien Potencier
   7   *
   8   * For the full copyright and license information, please view the LICENSE
   9   * file that was distributed with this source code.
  10   */
  11  
  12  /**
  13   * Defines a variable.
  14   *
  15   * <pre>
  16   *  {% set foo = 'foo' %}
  17   *
  18   *  {% set foo = [1, 2] %}
  19   *
  20   *  {% set foo = {'foo': 'bar'} %}
  21   *
  22   *  {% set foo = 'foo' ~ 'bar' %}
  23   *
  24   *  {% set foo, bar = 'foo', 'bar' %}
  25   *
  26   *  {% set foo %}Some content{% endset %}
  27   * </pre>
  28   */
  29  class Twig_TokenParser_Set extends Twig_TokenParser
  30  {
  31      public function parse(Twig_Token $token)
  32      {
  33          $lineno = $token->getLine();
  34          $stream = $this->parser->getStream();
  35          $names = $this->parser->getExpressionParser()->parseAssignmentExpression();
  36  
  37          $capture = false;
  38          if ($stream->nextIf(Twig_Token::OPERATOR_TYPE, '=')) {
  39              $values = $this->parser->getExpressionParser()->parseMultitargetExpression();
  40  
  41              $stream->expect(Twig_Token::BLOCK_END_TYPE);
  42  
  43              if (count($names) !== count($values)) {
  44                  throw new Twig_Error_Syntax('When using set, you must have the same number of variables and assignments.', $stream->getCurrent()->getLine(), $stream->getFilename());
  45              }
  46          } else {
  47              $capture = true;
  48  
  49              if (count($names) > 1) {
  50                  throw new Twig_Error_Syntax('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getFilename());
  51              }
  52  
  53              $stream->expect(Twig_Token::BLOCK_END_TYPE);
  54  
  55              $values = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
  56              $stream->expect(Twig_Token::BLOCK_END_TYPE);
  57          }
  58  
  59          return new Twig_Node_Set($capture, $names, $values, $lineno, $this->getTag());
  60      }
  61  
  62      public function decideBlockEnd(Twig_Token $token)
  63      {
  64          return $token->test('endset');
  65      }
  66  
  67      public function getTag()
  68      {
  69          return 'set';
  70      }
  71  }


Generated: Thu Jan 11 00:25:41 2018 Cross-referenced by PHPXref 0.7.1