Failed Conditions
Push — master ( 0b116d...5bfd4c )
by Jonathan
01:33 queued 01:08
created

InflectorFactory::__invoke()   B

Complexity

Conditions 7
Paths 7

Size

Total Lines 25
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 7

Importance

Changes 0
Metric Value
cc 7
eloc 17
nc 7
nop 1
dl 0
loc 25
ccs 16
cts 16
cp 1
crap 7
rs 8.8333
c 0
b 0
f 0
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 1079
    public function __invoke(string $language = Language::ENGLISH) : Inflector
19
    {
20
        switch ($language) {
21 1079
            case Language::ENGLISH:
22 840
                return (new English\InflectorFactory())();
23
24 239
            case Language::FRENCH:
25 72
                return (new French\InflectorFactory())();
26
27 167
            case Language::NORWEGIAN_BOKMAL:
28 22
                return (new NorwegianBokmal\InflectorFactory())();
29
30 145
            case Language::PORTUGUESE:
31 54
                return (new Portuguese\InflectorFactory())();
32
33 91
            case Language::SPANISH:
34 72
                return (new Spanish\InflectorFactory())();
35
36 19
            case Language::TURKISH:
37 18
                return (new Turkish\InflectorFactory())();
38
39
            default:
40 1
                throw new InvalidArgumentException(sprintf(
41 1
                    'Language "%s" is not supported.',
42 1
                    $language
43
                ));
44
        }
45
    }
46
}
47