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

Ruleset::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 3
dl 0
loc 5
ccs 4
cts 4
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Inflector\Rules;
6
7
class Ruleset
8
{
9
    /** @var Rules */
10
    private $rules;
11
12
    /** @var Uninflected */
13
    private $uninflected;
14
15
    /** @var Irregular */
16
    private $irregular;
17
18 526
    public function __construct(Rules $rules, Uninflected $uninflected, Irregular $irregular)
19
    {
20 526
        $this->rules       = $rules;
21 526
        $this->uninflected = $uninflected;
22 526
        $this->irregular   = $irregular;
23 526
    }
24
25 179
    public function getRules() : Rules
26
    {
27 179
        return $this->rules;
28
    }
29
30 420
    public function getUninflected() : Uninflected
31
    {
32 420
        return $this->uninflected;
33
    }
34
35 510
    public function getIrregular() : Irregular
36
    {
37 510
        return $this->irregular;
38
    }
39
40
    /**
41
     * Adds custom inflection rules.
42
     *
43
     * $singularRuleset->addRules(['/^(inflect)or$/i' => '\1ables']);
44
     * $pluralRuleset->addRules([
45
     *     'rules' => ['/^(inflect)ors$/i' => '\1ables'],
46
     *     'uninflected' => ['dontinflectme'],
47
     *     'irregular' => ['red' => 'redlings']
48
     * ]);
49
     *
50
     * @param mixed[] $rules
51
     */
52 4
    public function addRules(array $rules) : void
53
    {
54 4
        if ($this->isFullSyntax($rules)) {
55 4
            $this->rules       = isset($rules['rules']) ? new Rules($rules['rules']) : $this->rules;
56 4
            $this->uninflected = isset($rules['uninflected']) ? new Uninflected($rules['uninflected']) : $this->uninflected;
57 4
            $this->irregular   = isset($rules['irregular']) ? new Irregular($rules['irregular']) : $this->irregular;
58
        } else {
59 2
            $this->rules = new Rules($rules);
60
        }
61 4
    }
62
63
    /**
64
     * @param mixed[] $rules
65
     */
66 4
    private function isFullSyntax(array $rules) : bool
67
    {
68 4
        return isset($rules['rules']) || isset($rules['irregular']) || isset($rules['uninflected']);
69
    }
70
}
71