61 lines
1.6 KiB
PHP
61 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Doctrine\Inflector;
|
|
|
|
use Doctrine\Inflector\Rules\English;
|
|
use Doctrine\Inflector\Rules\Esperanto;
|
|
use Doctrine\Inflector\Rules\French;
|
|
use Doctrine\Inflector\Rules\Italian;
|
|
use Doctrine\Inflector\Rules\NorwegianBokmal;
|
|
use Doctrine\Inflector\Rules\Portuguese;
|
|
use Doctrine\Inflector\Rules\Spanish;
|
|
use Doctrine\Inflector\Rules\Turkish;
|
|
use InvalidArgumentException;
|
|
|
|
use function sprintf;
|
|
|
|
final class InflectorFactory
|
|
{
|
|
public static function create(): LanguageInflectorFactory
|
|
{
|
|
return self::createForLanguage(Language::ENGLISH);
|
|
}
|
|
|
|
public static function createForLanguage(string $language): LanguageInflectorFactory
|
|
{
|
|
switch ($language) {
|
|
case Language::ENGLISH:
|
|
return new English\InflectorFactory();
|
|
|
|
case Language::ESPERANTO:
|
|
return new Esperanto\InflectorFactory();
|
|
|
|
case Language::FRENCH:
|
|
return new French\InflectorFactory();
|
|
|
|
case Language::ITALIAN:
|
|
return new Italian\InflectorFactory();
|
|
|
|
case Language::NORWEGIAN_BOKMAL:
|
|
return new NorwegianBokmal\InflectorFactory();
|
|
|
|
case Language::PORTUGUESE:
|
|
return new Portuguese\InflectorFactory();
|
|
|
|
case Language::SPANISH:
|
|
return new Spanish\InflectorFactory();
|
|
|
|
case Language::TURKISH:
|
|
return new Turkish\InflectorFactory();
|
|
|
|
default:
|
|
throw new InvalidArgumentException(sprintf(
|
|
'Language "%s" is not supported.',
|
|
$language
|
|
));
|
|
}
|
|
}
|
|
}
|