Вход Регистрация
Файл: vendor/egulias/email-validator/src/Parser.php
Строк: 68
<?php

namespace EguliasEmailValidator;

use 
EguliasEmailValidatorResultResult;
use 
EguliasEmailValidatorResultValidEmail;
use 
EguliasEmailValidatorResultInvalidEmail;
use 
EguliasEmailValidatorResultReasonExpectingATEXT;

abstract class 
Parser
{
    
/**
     * @var WarningWarning[]
     */
    
protected $warnings = [];

    
/**
     * @var EmailLexer
     */
    
protected $lexer;

    
/**
     * id-left "@" id-right
     */
    
abstract protected function parseRightFromAt(): Result;
    abstract protected function 
parseLeftFromAt(): Result;
    abstract protected function 
preLeftParsing(): Result;


    public function 
__construct(EmailLexer $lexer)
    {
        
$this->lexer $lexer;
    }

    public function 
parse(string $str): Result
    
{
        
$this->lexer->setInput($str);

        if (
$this->lexer->hasInvalidTokens()) {
            return new 
InvalidEmail(new ExpectingATEXT("Invalid tokens found"), $this->lexer->current->value);
        }

        
$preParsingResult $this->preLeftParsing();
        if (
$preParsingResult->isInvalid()) {
            return 
$preParsingResult;
        }

        
$localPartResult $this->parseLeftFromAt();

        if (
$localPartResult->isInvalid()) {
            return 
$localPartResult;
        }

        
$domainPartResult $this->parseRightFromAt();

        if (
$domainPartResult->isInvalid()) {
            return 
$domainPartResult;
        }

        return new 
ValidEmail();
    }

    
/**
     * @return WarningWarning[]
     */
    
public function getWarnings(): array
    {
        return 
$this->warnings;
    }

    protected function 
hasAtToken(): bool
    
{
        
$this->lexer->moveNext();
        
$this->lexer->moveNext();

        return !
$this->lexer->current->isA(EmailLexer::S_AT);
    }
}
Онлайн: 1
Реклама