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

Ruleset::getUninflected()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
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 string[] */
10
    private $rules = [];
11
12
    /** @var string[] */
13
    private $uninflected = [];
14
15
    /** @var string[] */
16
    private $irregular = [];
17
18
    /**
19
     * @param string[] $rules
20
     * @param string[] $uninflected
21
     * @param string[] $irregular
22
     */
23 526
    public function __construct(array $rules, array $uninflected, array $irregular)
24
    {
25 526
        $this->rules       = $rules;
26 526
        $this->uninflected = $uninflected;
27 526
        $this->irregular   = $irregular;
28 526
    }
29
30
    /**
31
     * @return string[]
32
     */
33 179
    public function getRules() : array
34
    {
35 179
        return $this->rules;
36
    }
37
38
    /**
39
     * @return string[]
40
     */
41 420
    public function getUninflected() : array
42
    {
43 420
        return $this->uninflected;
44
    }
45
46
    /**
47
     * @return string[]
48
     */
49 510
    public function getIrregular() : array
50
    {
51 510
        return $this->irregular;
52
    }
53
54
    /**
55
     * Adds custom inflection rules.
56
     *
57
     * $singularRuleset->addRules(['/^(inflect)or$/i' => '\1ables']);
58
     * $pluralRuleset->addRules([
59
     *     'rules' => ['/^(inflect)ors$/i' => '\1ables'],
60
     *     'uninflected' => ['dontinflectme'],
61
     *     'irregular' => ['red' => 'redlings']
62
     * ]);
63
     *
64
     * @param mixed[] $rules
65
     */
66 4
    public function addRules(array $rules) : void
67
    {
68 4
        if ($this->isFullSyntax($rules)) {
69 4
            $this->rules       = $rules['rules'] ?? $this->rules;
70 4
            $this->uninflected = $rules['uninflected'] ?? $this->uninflected;
71 4
            $this->irregular   = $rules['irregular'] ?? $this->irregular;
72
        } else {
73 2
            $this->rules = $rules;
74
        }
75 4
    }
76
77
    /**
78
     * @param mixed[] $rules
79
     */
80 4
    private function isFullSyntax(array $rules) : bool
81
    {
82 4
        return isset($rules['rules']) || isset($rules['irregular']) || isset($rules['uninflected']);
83
    }
84
}
85