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

Breadcrumb

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

function ExpressionParser::parseConditionalExpression

1 call to ExpressionParser::parseConditionalExpression()
ExpressionParser::parseExpression in vendor/twig/twig/src/ExpressionParser.php

File

vendor/twig/twig/src/ExpressionParser.php, line 269

Class

ExpressionParser
Parses expressions.

Namespace

Twig

Code

private function parseConditionalExpression($expr) : AbstractExpression {
    while ($this->parser
        ->getStream()
        ->nextIf(Token::PUNCTUATION_TYPE, '?')) {
        if (!$this->parser
            ->getStream()
            ->nextIf(Token::PUNCTUATION_TYPE, ':')) {
            $expr2 = $this->parseExpression();
            if ($this->parser
                ->getStream()
                ->nextIf(Token::PUNCTUATION_TYPE, ':')) {
                // Ternary operator (expr ? expr2 : expr3)
                $expr3 = $this->parseExpression();
            }
            else {
                // Ternary without else (expr ? expr2)
                $expr3 = new ConstantExpression('', $this->parser
                    ->getCurrentToken()
                    ->getLine());
            }
        }
        else {
            // Ternary without then (expr ?: expr3)
            $expr2 = $expr;
            $expr3 = $this->parseExpression();
        }
        $expr = new ConditionalExpression($expr, $expr2, $expr3, $this->parser
            ->getCurrentToken()
            ->getLine());
    }
    return $expr;
}

API Navigation

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