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

Breadcrumb

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

function Comment::parse

Overrides PartParser::parse

File

vendor/egulias/email-validator/src/Parser/Comment.php, line 32

Class

Comment

Namespace

Egulias\EmailValidator\Parser

Code

public function parse() : Result {
    if ($this->lexer->current
        ->isA(EmailLexer::S_OPENPARENTHESIS)) {
        $this->openedParenthesis++;
        if ($this->noClosingParenthesis()) {
            return new InvalidEmail(new UnclosedComment(), $this->lexer->current->value);
        }
    }
    if ($this->lexer->current
        ->isA(EmailLexer::S_CLOSEPARENTHESIS)) {
        return new InvalidEmail(new UnOpenedComment(), $this->lexer->current->value);
    }
    $this->warnings[WarningComment::CODE] = new WarningComment();
    $moreTokens = true;
    while ($this->commentStrategy
        ->exitCondition($this->lexer, $this->openedParenthesis) && $moreTokens) {
        if ($this->lexer
            ->isNextToken(EmailLexer::S_OPENPARENTHESIS)) {
            $this->openedParenthesis++;
        }
        $this->warnEscaping();
        if ($this->lexer
            ->isNextToken(EmailLexer::S_CLOSEPARENTHESIS)) {
            $this->openedParenthesis--;
        }
        $moreTokens = $this->lexer
            ->moveNext();
    }
    if ($this->openedParenthesis >= 1) {
        return new InvalidEmail(new UnclosedComment(), $this->lexer->current->value);
    }
    if ($this->openedParenthesis < 0) {
        return new InvalidEmail(new UnOpenedComment(), $this->lexer->current->value);
    }
    $finalValidations = $this->commentStrategy
        ->endOfLoopValidations($this->lexer);
    $this->warnings = [
        $this->warnings,
        $this->commentStrategy
            ->getWarnings(),
    ];
    return $finalValidations;
}
RSS feed
Powered by Drupal