Вход Регистрация
Файл: 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->token["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->token['type'] !== EmailLexer::S_AT;
    }
}
Онлайн: 0
Реклама