Completed
Pull Request — master (#90)
by Jonathan
02:59
created

InflectorFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 51
ccs 24
cts 24
cp 1
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A createPluralRuleset() 0 15 1
A createInflector() 0 7 1
A createSingularRuleset() 0 22 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Inflector;
6
7
use Doctrine\Inflector\Rules\Irregular;
8
use Doctrine\Inflector\Rules\Plural;
9
use Doctrine\Inflector\Rules\Rules;
10
use Doctrine\Inflector\Rules\Ruleset;
11
use Doctrine\Inflector\Rules\Singular;
12
use Doctrine\Inflector\Rules\Uninflected;
13
use function array_flip;
14
use function array_merge;
15
16
class InflectorFactory
17
{
18 526
    public function createInflector(
19
        ?Ruleset $singularRuleset = null,
20
        ?Ruleset $pluralRuleset = null
21
    ) : Inflector {
22 526
        return new Inflector(
23 526
            new RulesetInflector($singularRuleset ?? $this->createSingularRuleset()),
24 526
            new RulesetInflector($pluralRuleset ?? $this->createPluralRuleset())
25
        );
26
    }
27
28 526
    public function createSingularRuleset(
29
        ?Rules $rules = null,
30
        ?Uninflected $uninflected = null,
31
        ?Irregular $irregular = null,
32
        ?Irregular $pluralIrregular = null
33
    ) : Ruleset {
34 526
        $rules           = $rules ?? new Rules(Singular::RULES);
35 526
        $uninflected     = $uninflected ?? new Uninflected(Singular::UNINFLECTED);
36 526
        $irregular       = $irregular ?? new Irregular(Singular::IRREGULAR);
37 526
        $pluralIrregular = $pluralIrregular ?? new Irregular(Plural::IRREGULAR);
38
39 526
        $singularUninflected = new Uninflected(array_merge(
40 526
            $uninflected->getUninflected(),
41 526
            Uninflected::DEFAULT
42
        ));
43
44 526
        $singularIrregular = new Irregular(array_merge(
45 526
            $irregular->getIrregular(),
46 526
            array_flip($pluralIrregular->getIrregular())
47
        ));
48
49 526
        return new Ruleset($rules, $singularUninflected, $singularIrregular);
50
    }
51
52 526
    public function createPluralRuleset(
53
        ?Rules $rules = null,
54
        ?Uninflected $uninflected = null,
55
        ?Irregular $irregular = null
56
    ) : Ruleset {
57 526
        $rules       = $rules ?? new Rules(Plural::RULES);
58 526
        $uninflected = $uninflected ?? new Uninflected(Plural::UNINFLECTED);
59 526
        $irregular   = $irregular ?? new Irregular(Plural::IRREGULAR);
60
61 526
        $pluralUninflected = new Uninflected(array_merge(
62 526
            $uninflected->getUninflected(),
63 526
            Uninflected::DEFAULT
64
        ));
65
66 526
        return new Ruleset($rules, $pluralUninflected, $irregular);
67
    }
68
}
69