You are here

public function DomainPart::parse in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 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

DomainPart

Namespace

Egulias\EmailValidator\Parser

Code

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;
}