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

Breadcrumb

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

function FromTokenParser::parse

Overrides TokenParserInterface::parse

File

vendor/twig/twig/src/TokenParser/FromTokenParser.php, line 30

Class

FromTokenParser
Imports macros.

Namespace

Twig\TokenParser

Code

public function parse(Token $token) : Node {
    $macro = $this->parser
        ->getExpressionParser()
        ->parseExpression();
    $stream = $this->parser
        ->getStream();
    $stream->expect(Token::NAME_TYPE, 'import');
    $targets = [];
    while (true) {
        $name = $stream->expect(Token::NAME_TYPE)
            ->getValue();
        if ($stream->nextIf('as')) {
            $alias = new AssignContextVariable($stream->expect(Token::NAME_TYPE)
                ->getValue(), $token->getLine());
        }
        else {
            $alias = new AssignContextVariable($name, $token->getLine());
        }
        $targets[$name] = $alias;
        if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) {
            break;
        }
    }
    $stream->expect(Token::BLOCK_END_TYPE);
    $internalRef = new AssignTemplateVariable(new TemplateVariable(null, $token->getLine()), $this->parser
        ->isMainScope());
    $node = new ImportNode($macro, $internalRef, $token->getLine());
    foreach ($targets as $name => $alias) {
        $this->parser
            ->addImportedSymbol('function', $alias->getAttribute('name'), 'macro_' . $name, $internalRef);
    }
    return $node;
}

API Navigation

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