Passed
Pull Request — master (#90)
by Jonathan
02:20
created

InflectorFactory::createSingularRuleset()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 4
dl 0
loc 22
ccs 12
cts 12
cp 1
crap 1
rs 9.2
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\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_merge;
14
15
class InflectorFactory
16
{
17 527
    public function createInflector(
18
        ?Ruleset $singularRuleset = null,
19
        ?Ruleset $pluralRuleset = null
20
    ) : Inflector {
21 527
        return new Inflector(
22 527
            new RulesetInflector($singularRuleset ?? $this->createSingularRuleset()),
23 527
            new RulesetInflector($pluralRuleset ?? $this->createPluralRuleset())
24
        );
25
    }
26
27 527
    public function createSingularRuleset(
28
        ?Rules $rules = null,
29
        ?Uninflected $uninflected = null,
30
        ?Irregular $irregular = null,
31
        ?Irregular $pluralIrregular = null
32
    ) : Ruleset {
33 527
        $rules           = $rules ?? new Rules(...Singular::getDefaultRules());
34 527
        $uninflected     = $uninflected ?? new Uninflected(...Singular::getUninflectedWords());
35 527
        $irregular       = $irregular ?? new Irregular(...Singular::getIrregularRules());
36 527
        $pluralIrregular = $pluralIrregular ?? new Irregular(...Plural::getIrregularRules());
37
38 527
        $singularUninflected = new Uninflected(...array_merge(
39 527
            $uninflected->getWords(),
40 527
            Uninflected::getDefaultWords()
41
        ));
42
43 527
        $singularIrregular = new Irregular(...array_merge(
44 527
            $irregular->getRules(),
45 527
            $pluralIrregular->getFlippedRules()
46
        ));
47
48 527
        return new Ruleset($rules, $singularUninflected, $singularIrregular);
49
    }
50
51 527
    public function createPluralRuleset(
52
        ?Rules $rules = null,
53
        ?Uninflected $uninflected = null,
54
        ?Irregular $irregular = null
55
    ) : Ruleset {
56 527
        $rules       = $rules ?? new Rules(...Plural::getDefaultRules());
57 527
        $uninflected = $uninflected ?? new Uninflected(...Plural::getUninflectedWords());
58 527
        $irregular   = $irregular ?? new Irregular(...Plural::getIrregularRules());
59
60 527
        $pluralUninflected = new Uninflected(...array_merge(
61 527
            $uninflected->getWords(),
62 527
            Uninflected::getDefaultWords()
63
        ));
64
65 527
        return new Ruleset($rules, $pluralUninflected, $irregular);
66
    }
67
}
68