mirror of
https://github.com/rectorphp/rector.git
synced 2025-01-18 14:03:41 +01:00
aae549741f
0cb3fd0feb
[Php73] Handle crash Type Error on JsonThrowOnErrorRector (#4626)
35 lines
967 B
PHP
35 lines
967 B
PHP
<?php
|
|
|
|
declare (strict_types=1);
|
|
namespace Rector\Naming;
|
|
|
|
use RectorPrefix202308\Doctrine\Inflector\Inflector;
|
|
use RectorPrefix202308\Nette\Utils\Strings;
|
|
final class RectorNamingInflector
|
|
{
|
|
/**
|
|
* @readonly
|
|
* @var \Doctrine\Inflector\Inflector
|
|
*/
|
|
private $inflector;
|
|
/**
|
|
* @var string
|
|
* @see https://regex101.com/r/VqVvke/3
|
|
*/
|
|
private const DATA_INFO_SUFFIX_REGEX = '#^(?<prefix>.+)(?<suffix>Data|Info)$#';
|
|
public function __construct(Inflector $inflector)
|
|
{
|
|
$this->inflector = $inflector;
|
|
}
|
|
public function singularize(string $name) : string
|
|
{
|
|
$matches = Strings::match($name, self::DATA_INFO_SUFFIX_REGEX);
|
|
if ($matches === null) {
|
|
return $this->inflector->singularize($name);
|
|
}
|
|
$singularized = $this->inflector->singularize($matches['prefix']);
|
|
$uninflectable = $matches['suffix'];
|
|
return $singularized . $uninflectable;
|
|
}
|
|
}
|