Compare commits

...

1 Commits

Author SHA1 Message Date
Alexander M. Turek 5f35e41eba Allow doctrine/lexer 2 (#345) 2022-12-30 15:09:25 +01:00
6 changed files with 91 additions and 39 deletions
+1 -1
View File
@@ -14,7 +14,7 @@
}, },
"require": { "require": {
"php": ">=7.2", "php": ">=7.2",
"doctrine/lexer": "^1.2", "doctrine/lexer": "^1.2|^2",
"symfony/polyfill-intl-idn": "^1.15" "symfony/polyfill-intl-idn": "^1.15"
}, },
"require-dev": { "require-dev": {
Generated
+60 -15
View File
@@ -4,35 +4,80 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "a77d36b64bc1213fecf4d4f92d759c3b", "content-hash": "9b420b2279da45fe448cd428cf568d87",
"packages": [ "packages": [
{ {
"name": "doctrine/lexer", "name": "doctrine/deprecations",
"version": "1.2.3", "version": "v1.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/lexer.git", "url": "https://github.com/doctrine/deprecations.git",
"reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
"reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.1 || ^8.0" "php": "^7.1|^8.0"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "^9.0", "doctrine/coding-standard": "^9",
"phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5|^8.5|^9.5",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psr/log": "^1|^2|^3"
"vimeo/psalm": "^4.11" },
"suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/v1.0.0"
},
"time": "2022-05-02T15:47:09+00:00"
},
{
"name": "doctrine/lexer",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
"reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
"reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
"shasum": ""
},
"require": {
"doctrine/deprecations": "^1.0",
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^9 || ^10",
"phpstan/phpstan": "^1.3",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psalm/plugin-phpunit": "^0.18.3",
"vimeo/psalm": "^4.11 || ^5.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Lexer\\": "src"
} }
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
@@ -64,7 +109,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/lexer/issues", "issues": "https://github.com/doctrine/lexer/issues",
"source": "https://github.com/doctrine/lexer/tree/1.2.3" "source": "https://github.com/doctrine/lexer/tree/2.1.0"
}, },
"funding": [ "funding": [
{ {
@@ -80,7 +125,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-02-28T11:07:21+00:00" "time": "2022-12-14T08:49:07+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-idn", "name": "symfony/polyfill-intl-idn",
+5 -16
View File
@@ -1,19 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="3.8.3@389af1bfc739bfdff3f9e3dc7bd6499aee51a831"> <files psalm-version="5.4.0@62db5d4f6a7ae0a20f7cc5a4952d730272fc0863">
<file src="src/EmailLexer.php"> <file src="src/Parser/DomainPart.php">
<DocblockTypeContradiction occurrences="1"> <RedundantConditionGivenDocblockType occurrences="1">
<code>self::$nullToken</code> <code>null !== $this-&gt;lexer-&gt;token['type']</code>
</DocblockTypeContradiction> </RedundantConditionGivenDocblockType>
</file>
<file src="src/Parser/Parser.php">
<MissingReturnType occurrences="1">
<code>parse</code>
</MissingReturnType>
</file>
<file src="src/Validation/SpoofCheckValidation.php">
<UndefinedClass occurrences="2">
<code>Spoofchecker</code>
<code>Spoofchecker</code>
</UndefinedClass>
</file> </file>
</files> </files>
+7 -1
View File
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config" xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config ./vendor/vimeo/psalm/config.xsd" xsi:schemaLocation="https://getpsalm.org/schema/config ./vendor/vimeo/psalm/config.xsd"
errorBaseline="./psalm.baseline.xml" errorBaseline="psalm.baseline.xml"
> >
<projectFiles> <projectFiles>
<directory name="src" /> <directory name="src" />
@@ -13,5 +13,11 @@
</projectFiles> </projectFiles>
<issueHandlers> <issueHandlers>
<DeprecatedMethod>
<errorLevel type="suppress">
<!-- This issue needs to be resolved before upgrading to Lexer 3 -->
<referencedMethod name="Doctrine\Common\Lexer\Token::offsetGet"/>
</errorLevel>
</DeprecatedMethod>
</issueHandlers> </issueHandlers>
</psalm> </psalm>
+13 -5
View File
@@ -3,7 +3,11 @@
namespace Egulias\EmailValidator; namespace Egulias\EmailValidator;
use Doctrine\Common\Lexer\AbstractLexer; use Doctrine\Common\Lexer\AbstractLexer;
use Doctrine\Common\Lexer\Token;
/**
* @extends AbstractLexer<int, string>
*/
class EmailLexer extends AbstractLexer class EmailLexer extends AbstractLexer
{ {
//ASCII values //ASCII values
@@ -140,18 +144,20 @@ class EmailLexer extends AbstractLexer
/** /**
* The last matched/seen token. * The last matched/seen token.
* *
* @var array * @var array|Token
* *
* @psalm-suppress NonInvariantDocblockPropertyType * @psalm-suppress NonInvariantDocblockPropertyType
* @psalm-var array{value:string, type:null|int, position:int} * @psalm-var array{value:string, type:null|int, position:int}|Token<int, string>
* @psalm-suppress NonInvariantDocblockPropertyType
*/ */
public $token; public $token;
/** /**
* The next token in the input. * The next token in the input.
* *
* @var array{position: int, type: int|null|string, value: int|string}|null * @var array|Token|null
*
* @psalm-suppress NonInvariantDocblockPropertyType
* @psalm-var array{position: int, type: int|null|string, value: int|string}|Token<int, string>|null
*/ */
public $lookahead; public $lookahead;
@@ -210,7 +216,9 @@ class EmailLexer extends AbstractLexer
$this->accumulator .= $this->token['value']; $this->accumulator .= $this->token['value'];
} }
$this->previous = $this->token; $this->previous = $this->token instanceof Token
? ['value' => $this->token->value, 'type' => $this->token->type, 'position' => $this->token->position]
: $this->token;
if($this->lookahead === null) { if($this->lookahead === null) {
$this->lookahead = self::$nullToken; $this->lookahead = self::$nullToken;
+5 -1
View File
@@ -2,6 +2,7 @@
namespace Egulias\EmailValidator\Parser; namespace Egulias\EmailValidator\Parser;
use Doctrine\Common\Lexer\Token;
use Egulias\EmailValidator\EmailLexer; use Egulias\EmailValidator\EmailLexer;
use Egulias\EmailValidator\Warning\TLD; use Egulias\EmailValidator\Warning\TLD;
use Egulias\EmailValidator\Result\Result; use Egulias\EmailValidator\Result\Result;
@@ -212,7 +213,10 @@ class DomainPart extends PartParser
return new ValidEmail(); return new ValidEmail();
} }
private function checkNotAllowedChars(array $token) : Result /**
* @psalm-param array|Token<int, string> $token
*/
private function checkNotAllowedChars($token) : Result
{ {
$notAllowed = [EmailLexer::S_BACKSLASH => true, EmailLexer::S_SLASH=> true]; $notAllowed = [EmailLexer::S_BACKSLASH => true, EmailLexer::S_SLASH=> true];
if (isset($notAllowed[$token['type']])) { if (isset($notAllowed[$token['type']])) {