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

Breadcrumb

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

function Parser::parseTemplateLiteral

Parses a template literal

Parameters

bool $tagged True if the template is tagged:

Return value

Node\Literal|null

2 calls to Parser::parseTemplateLiteral()
Parser::parseLeftHandSideExpression in vendor/mck89/peast/lib/Peast/Syntax/Parser.php
Parses a left hand side expression
Parser::parsePrimaryExpression in vendor/mck89/peast/lib/Peast/Syntax/Parser.php
Parses a primary expression

File

vendor/mck89/peast/lib/Peast/Syntax/Parser.php, line 3882

Class

Parser
Parser class

Namespace

Peast\Syntax

Code

protected function parseTemplateLiteral($tagged = false) {
    $token = $this->scanner
        ->getToken();
    if (!$token || $token->type !== Token::TYPE_TEMPLATE) {
        return null;
    }
    
    //Do not parse templates parts
    $val = $token->value;
    if ($val[0] !== "`") {
        return null;
    }
    $quasis = $expressions = array();
    $valid = false;
    do {
        $this->scanner
            ->consumeToken();
        $val = $token->value;
        $this->checkInvalidEscapeSequences($val, false, true, $tagged);
        $lastChar = substr($val, -1);
        $quasi = $this->createNode("TemplateElement", $token);
        $quasi->setRawValue($val);
        if ($lastChar === "`") {
            $quasi->setTail(true);
            $quasis[] = $this->completeNode($quasi);
            $valid = true;
            break;
        }
        else {
            $quasis[] = $this->completeNode($quasi);
            $exp = $this->isolateContext(array(
                "allowIn" => true,
            ), "parseExpression");
            if ($exp) {
                $expressions[] = $exp;
            }
            else {
                $valid = false;
                break;
            }
        }
        $token = $this->scanner
            ->getToken();
    } while ($token && $token->type === Token::TYPE_TEMPLATE);
    if ($valid) {
        $node = $this->createNode("TemplateLiteral", $quasis[0]);
        $node->setQuasis($quasis);
        $node->setExpressions($expressions);
        return $this->completeNode($node);
    }
    $this->error();
}

API Navigation

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