InflectorFactory::createForLanguage()   B
last analyzed

Complexity

Conditions 7
Paths 7

Size

Total Lines 19
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 7

Importance

Changes 0
Metric Value
eloc 17
c 0
b 0
f 0
dl 0
loc 19
ccs 11
cts 11
cp 1
rs 8.8333
cc 7
nc 7
nop 1
crap 7
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Inflector;
6
7
use Doctrine\Inflector\Rules\English;
8
use Doctrine\Inflector\Rules\French;
9
use Doctrine\Inflector\Rules\NorwegianBokmal;
10
use Doctrine\Inflector\Rules\Portuguese;
11
use Doctrine\Inflector\Rules\Spanish;
12
use Doctrine\Inflector\Rules\Turkish;
13
use InvalidArgumentException;
14
use function sprintf;
15
16
final class InflectorFactory
17
{
18 17
    public static function create() : LanguageInflectorFactory
19
    {
20 17
        return self::createForLanguage(Language::ENGLISH);
21
    }
22
23 1106
    public static function createForLanguage(string $language) : LanguageInflectorFactory
24
    {
25 1106
        switch ($language) {
26
            case Language::ENGLISH:
27 862
                return new English\InflectorFactory();
28
            case Language::FRENCH:
29 73
                return new French\InflectorFactory();
30
            case Language::NORWEGIAN_BOKMAL:
31 23
                return new NorwegianBokmal\InflectorFactory();
32
            case Language::PORTUGUESE:
33 55
                return new Portuguese\InflectorFactory();
34
            case Language::SPANISH:
35 73
                return new Spanish\InflectorFactory();
36
            case Language::TURKISH:
37 19
                return new Turkish\InflectorFactory();
38
            default:
39 1
                throw new InvalidArgumentException(sprintf(
40 1
                    'Language "%s" is not supported.',
41 1
                    $language
42
                ));
43
        }
44
    }
45
}
46