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

Ruleset   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 76
ccs 20
cts 20
cp 1
rs 10
c 0
b 0
f 0
wmc 9

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getIrregular() 0 3 1
A __construct() 0 5 1
A getRules() 0 3 1
A addRules() 0 8 2
A isFullSyntax() 0 3 3
A getUninflected() 0 3 1
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