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

Breadcrumb

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

function ForTokenParser::parse

Overrides TokenParserInterface::parse

File

vendor/twig/twig/src/TokenParser/ForTokenParser.php, line 33

Class

ForTokenParser
Loops over each item of a sequence.

Namespace

Twig\TokenParser

Code

public function parse(Token $token) : Node {
    $lineno = $token->getLine();
    $stream = $this->parser
        ->getStream();
    $targets = $this->parser
        ->getExpressionParser()
        ->parseAssignmentExpression();
    $stream->expect(Token::OPERATOR_TYPE, 'in');
    $seq = $this->parser
        ->getExpressionParser()
        ->parseExpression();
    $stream->expect(Token::BLOCK_END_TYPE);
    $body = $this->parser
        ->subparse([
        $this,
        'decideForFork',
    ]);
    if ('else' == $stream->next()
        ->getValue()) {
        $stream->expect(Token::BLOCK_END_TYPE);
        $else = $this->parser
            ->subparse([
            $this,
            'decideForEnd',
        ], true);
    }
    else {
        $else = null;
    }
    $stream->expect(Token::BLOCK_END_TYPE);
    if (\count($targets) > 1) {
        $keyTarget = $targets->getNode('0');
        $keyTarget = new AssignContextVariable($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine());
        $valueTarget = $targets->getNode('1');
    }
    else {
        $keyTarget = new AssignContextVariable('_key', $lineno);
        $valueTarget = $targets->getNode('0');
    }
    $valueTarget = new AssignContextVariable($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine());
    return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno);
}

API Navigation

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