Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php
Строк: 133
<?php

namespace EguliasEmailValidator;

use 
DoctrineCommonLexerAbstractLexer;

class 
EmailLexer extends AbstractLexer
{
    
//ASCII values
    
const C_DEL              127;
    const 
C_NUL              0;
    const 
S_AT               64;
    const 
S_BACKSLASH        92;
    const 
S_DOT              46;
    const 
S_DQUOTE           34;
    const 
S_OPENPARENTHESIS  49;
    const 
S_CLOSEPARENTHESIS 261;
    const 
S_OPENBRACKET      262;
    const 
S_CLOSEBRACKET     263;
    const 
S_HYPHEN           264;
    const 
S_COLON            265;
    const 
S_DOUBLECOLON      266;
    const 
S_SP               267;
    const 
S_HTAB             268;
    const 
S_CR               269;
    const 
S_LF               270;
    const 
S_IPV6TAG          271;
    const 
S_LOWERTHAN        272;
    const 
S_GREATERTHAN      273;
    const 
S_COMMA            274;
    const 
S_SEMICOLON        275;
    const 
S_OPENQBRACKET     276;
    const 
S_CLOSEQBRACKET    277;
    const 
S_SLASH            278;
    const 
S_EMPTY            null;
    const 
GENERIC            300;
    const 
CRLF               301;
    const 
INVALID            302;
    const 
ASCII_INVALID_FROM 127;
    const 
ASCII_INVALID_TO   199;

    
/**
     * US-ASCII visible characters not valid for atext (@link http://tools.ietf.org/html/rfc5322#section-3.2.3)
     *
     * @var array
     */
    
protected $charValue = array(
        
'('    => self::S_OPENPARENTHESIS,
        
')'    => self::S_CLOSEPARENTHESIS,
        
'<'    => self::S_LOWERTHAN,
        
'>'    => self::S_GREATERTHAN,
        
'['    => self::S_OPENBRACKET,
        
']'    => self::S_CLOSEBRACKET,
        
':'    => self::S_COLON,
        
';'    => self::S_SEMICOLON,
        
'@'    => self::S_AT,
        
'\'   => self::S_BACKSLASH,
        '
/'    => self::S_SLASH,
        '
,'    => self::S_COMMA,
        '
.'    => self::S_DOT,
        '"'    => self::S_DQUOTE,
        '-'    => self::S_HYPHEN,
        '::'   => self::S_DOUBLECOLON,
        ' '    => self::S_SP,
        "
t"   => self::S_HTAB,
        "
r"   => self::S_CR,
        "
n"   => self::S_LF,
        "
rn" => self::CRLF,
        'IPv6' => self::S_IPV6TAG,
        '<'    => self::S_LOWERTHAN,
        '>'    => self::S_GREATERTHAN,
        '{'    => self::S_OPENQBRACKET,
        '}'    => self::S_CLOSEQBRACKET,
        ''     => self::S_EMPTY,
        ''   => self::C_NUL,
    );

    protected 
$invalidASCII = array(226 => 1,);

    protected 
$hasInvalidTokens = false;

    protected 
$previous;

    public function reset()
    {
        
$this->hasInvalidTokens = false;
        parent::reset();
    }

    public function hasInvalidTokens()
    {
        return 
$this->hasInvalidTokens;
    }

    /**
     * @param 
$type
     * @throws UnexpectedValueException
     * @return boolean
     */
    public function find(
$type)
    {
        
$search = clone $this;
        
$search->skipUntil($type);

        if (!
$search->lookahead) {
            throw new UnexpectedValueException(
$type . ' not found');
        }
        return true;
    }

    /**
     * getPrevious
     *
     * @return array token
     */
    public function getPrevious()
    {
        return 
$this->previous;
    }

    /**
     * moveNext
     *
     * @return boolean
     */
    public function moveNext()
    {
        
$this->previous = $this->token;

        return parent::moveNext();
    }

    /**
     * Lexical catchable patterns.
     *
     * @return string[]
     */
    protected function getCatchablePatterns()
    {
        return array(
            '[a-zA-Z_]+[46]?',
            '[0-9]+',
            'rn',
            '::',
            's+',
            '[x10-x1F]+',
            '.',
            );
    }

    /**
     * Lexical non-catchable patterns.
     *
     * @return string[]
     */
    protected function getNonCatchablePatterns()
    {
        return array('[x7f-xff]+');
    }

    /**
     * Retrieve token type. Also processes the token value if necessary.
     *
     * @param string 
$value
     * @throws InvalidArgumentException
     * @return integer
     */
    protected function getType(&
$value)
    {

        if (
$this->isNullType($value)) {
            return self::C_NUL;
        }

        if (isset(
$this->charValue[$value])) {
            return 
$this->charValue[$value];
        }

        if (
$this->isInvalid($value)) {
            
$this->hasInvalidTokens = true;
            return self::INVALID;
        }

        return  self::GENERIC;
    }

    /**
     * @param string 
$value
     */
    protected function isNullType(
$value)
    {
        if (
$value === "") {
            return true;
        }

        return false;
    }

    /**
     * @param string 
$value
     */
    protected function isInvalid(
$value)
    {
        if (preg_match('/[x10-x1F]+/', 
$value)) {
            return true;
        }

        if (isset(
$this->invalidASCII[ord($value)])) {
            return true;
        }

        return false;
    }
}
Онлайн: 0
Реклама