Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

Parser.php

Same filename in this branch
  1. 11.1.x vendor/open-telemetry/api/Baggage/Propagation/Parser.php
  2. 11.1.x vendor/phpunit/phpunit/src/Metadata/Parser/Parser.php
  3. 11.1.x vendor/sebastian/cli-parser/src/Parser.php
  4. 11.1.x vendor/sebastian/diff/src/Parser.php
  5. 11.1.x vendor/nikic/php-parser/lib/PhpParser/Parser.php
  6. 11.1.x vendor/twig/twig/src/Parser.php
  7. 11.1.x vendor/symfony/css-selector/Parser/Parser.php
  8. 11.1.x vendor/symfony/yaml/Parser.php
  9. 11.1.x vendor/mck89/peast/lib/Peast/Selector/Parser.php
  10. 11.1.x vendor/mck89/peast/lib/Peast/Syntax/Parser.php
  11. 11.1.x vendor/mck89/peast/lib/Peast/Syntax/JSX/Parser.php

Namespace

Egulias\EmailValidator

File

vendor/egulias/email-validator/src/Parser.php

View source
<?php

namespace Egulias\EmailValidator;

use Egulias\EmailValidator\Result\Result;
use Egulias\EmailValidator\Result\ValidEmail;
use Egulias\EmailValidator\Result\InvalidEmail;
use Egulias\EmailValidator\Result\Reason\ExpectingATEXT;
abstract class Parser {
    
    /**
     * @var Warning\Warning[]
     */
    protected $warnings = [];
    
    /**
     * @var EmailLexer
     */
    protected $lexer;
    
    /**
     * id-left "@" id-right
     */
    protected abstract function parseRightFromAt() : Result;
    protected abstract function parseLeftFromAt() : Result;
    protected abstract 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 Warning\Warning[]
     */
    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);
    }

}

Classes

Title Deprecated Summary
Parser

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal