function Comment::parse
Overrides PartParser::parse
File
-
vendor/
egulias/ email-validator/ src/ Parser/ Comment.php, line 32
Class
Namespace
Egulias\EmailValidator\ParserCode
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;
}