public function DomainPart::parse in Zircon Profile 8.0
Same name and namespace in other branches
- 8 vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php \Egulias\EmailValidator\Parser\DomainPart::parse()
 
Overrides Parser::parse
File
- vendor/
egulias/ email-validator/ src/ Egulias/ EmailValidator/ Parser/ DomainPart.php, line 15  
Class
Namespace
Egulias\EmailValidator\ParserCode
public function parse($domainPart) {
  $this->lexer
    ->moveNext();
  if ($this->lexer->token['type'] === EmailLexer::S_DOT) {
    throw new \InvalidArgumentException('ERR_DOT_START');
  }
  if ($this->lexer->token['type'] === EmailLexer::S_EMPTY) {
    throw new \InvalidArgumentException('ERR_NODOMAIN');
  }
  if ($this->lexer->token['type'] === EmailLexer::S_HYPHEN) {
    throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
  }
  if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) {
    $this->warnings[] = EmailValidator::DEPREC_COMMENT;
    $this
      ->parseDomainComments();
  }
  $domain = $this
    ->doParseDomainPart();
  $prev = $this->lexer
    ->getPrevious();
  $length = strlen($domain);
  if ($prev['type'] === EmailLexer::S_DOT) {
    throw new \InvalidArgumentException('ERR_DOT_END');
  }
  if ($prev['type'] === EmailLexer::S_HYPHEN) {
    throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
  }
  if ($length > self::DOMAIN_MAX_LENGTH) {
    $this->warnings[] = EmailValidator::RFC5322_DOMAIN_TOOLONG;
  }
  if ($prev['type'] === EmailLexer::S_CR) {
    throw new \InvalidArgumentException('ERR_FWS_CRLF_END');
  }
  $this->domainPart = $domain;
}