Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. UseTokenParser.php

function UseTokenParser::parse

Overrides TokenParserInterface::parse

File

vendor/twig/twig/src/TokenParser/UseTokenParser.php, line 37

Class

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

Namespace

Twig\TokenParser

Code

public function parse(Token $token) : Node {
    $template = $this->parser
        ->getExpressionParser()
        ->parseExpression();
    $stream = $this->parser
        ->getStream();
    if (!$template instanceof ConstantExpression) {
        throw new SyntaxError('The template references in a "use" statement must be a string.', $stream->getCurrent()
            ->getLine(), $stream->getSourceContext());
    }
    $targets = [];
    if ($stream->nextIf('with')) {
        while (true) {
            $name = $stream->expect(Token::NAME_TYPE)
                ->getValue();
            $alias = $name;
            if ($stream->nextIf('as')) {
                $alias = $stream->expect(Token::NAME_TYPE)
                    ->getValue();
            }
            $targets[$name] = new ConstantExpression($alias, -1);
            if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) {
                break;
            }
        }
    }
    $stream->expect(Token::BLOCK_END_TYPE);
    $this->parser
        ->addTrait(new Nodes([
        'template' => $template,
        'targets' => new Nodes($targets),
    ]));
    return new EmptyNode($token->getLine());
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal