2020-02-13 10:09:51 +00:00
|
|
|
<?php
|
|
|
|
|
2021-05-09 20:15:43 +00:00
|
|
|
declare (strict_types=1);
|
2022-06-06 17:12:56 +00:00
|
|
|
namespace Rector\NodeNameResolver\Regex;
|
2020-02-13 10:09:51 +00:00
|
|
|
|
2023-06-01 08:56:46 +00:00
|
|
|
use RectorPrefix202306\Nette\Utils\Strings;
|
2020-02-13 10:09:51 +00:00
|
|
|
final class RegexPatternDetector
|
|
|
|
{
|
2020-02-17 15:13:38 +00:00
|
|
|
/**
|
|
|
|
* @var string[]
|
|
|
|
*
|
|
|
|
* This prevents miss matching like "aMethoda"
|
|
|
|
*/
|
|
|
|
private const POSSIBLE_DELIMITERS = ['#', '~', '/'];
|
2021-05-09 20:15:43 +00:00
|
|
|
public function isRegexPattern(string $name) : bool
|
2020-02-13 10:09:51 +00:00
|
|
|
{
|
2022-06-07 08:22:29 +00:00
|
|
|
if (Strings::length($name) <= 2) {
|
2021-05-09 20:15:43 +00:00
|
|
|
return \false;
|
2020-02-13 10:09:51 +00:00
|
|
|
}
|
|
|
|
$firstChar = $name[0];
|
2021-05-09 20:15:43 +00:00
|
|
|
$lastChar = $name[\strlen($name) - 1];
|
2020-02-13 10:09:51 +00:00
|
|
|
if ($firstChar !== $lastChar) {
|
2021-05-09 20:15:43 +00:00
|
|
|
return \false;
|
2020-02-13 10:09:51 +00:00
|
|
|
}
|
2021-05-09 20:15:43 +00:00
|
|
|
return \in_array($firstChar, self::POSSIBLE_DELIMITERS, \true);
|
2020-02-13 10:09:51 +00:00
|
|
|
}
|
|
|
|
}
|