public function Twig_TokenParser_Use::parse

Parses a token and returns a node.

Parameters

Twig_Token $token A Twig_Token instance:

Return value

Twig_NodeInterface A Twig_NodeInterface instance

Overrides Twig_TokenParserInterface::parse

File

drupal/core/vendor/twig/twig/lib/Twig/TokenParser/Use.php, line 35

Class

Twig_TokenParser_Use
Imports blocks defined in another template into the current template.

Code

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;
}