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

Singular   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

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

3 Methods

Rating   Name   Duplication   Size   Complexity  
B getDefaultRules() 0 43 1
A getUninflectedWords() 0 15 1
A getIrregularRules() 0 19 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Inflector\Rules;
6
7
class Singular
8
{
9
    /**
10
     * @return Rule[]
11
     */
12 525
    public static function getDefaultRules() : array
13
    {
14
        return [
15 525
            new Rule('/(s)tatuses$/i', '\1\2tatus'),
16 525
            new Rule('/^(.*)(menu)s$/i', '\1\2'),
17 525
            new Rule('/(quiz)zes$/i', '\\1'),
18 525
            new Rule('/(matr)ices$/i', '\1ix'),
19 525
            new Rule('/(vert|ind)ices$/i', '\1ex'),
20 525
            new Rule('/^(ox)en/i', '\1'),
21 525
            new Rule('/(alias)(es)*$/i', '\1'),
22 525
            new Rule('/(buffal|her|potat|tomat|volcan)oes$/i', '\1o'),
23 525
            new Rule('/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|viri?)i$/i', '\1us'),
24 525
            new Rule('/([ftw]ax)es/i', '\1'),
25 525
            new Rule('/(analys|ax|cris|test|thes)es$/i', '\1is'),
26 525
            new Rule('/(shoe|slave)s$/i', '\1'),
27 525
            new Rule('/(o)es$/i', '\1'),
28 525
            new Rule('/ouses$/', 'ouse'),
29 525
            new Rule('/([^a])uses$/', '\1us'),
30 525
            new Rule('/([m|l])ice$/i', '\1ouse'),
31 525
            new Rule('/(x|ch|ss|sh)es$/i', '\1'),
32 525
            new Rule('/(m)ovies$/i', '\1\2ovie'),
33 525
            new Rule('/(s)eries$/i', '\1\2eries'),
34 525
            new Rule('/([^aeiouy]|qu)ies$/i', '\1y'),
35 525
            new Rule('/([lr])ves$/i', '\1f'),
36 525
            new Rule('/(tive)s$/i', '\1'),
37 525
            new Rule('/(hive)s$/i', '\1'),
38 525
            new Rule('/(drive)s$/i', '\1'),
39 525
            new Rule('/(dive)s$/i', '\1'),
40 525
            new Rule('/(olive)s$/i', '\1'),
41 525
            new Rule('/([^fo])ves$/i', '\1fe'),
42 525
            new Rule('/(^analy)ses$/i', '\1sis'),
43 525
            new Rule('/(analy|diagno|^ba|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i', '\1\2sis'),
44 525
            new Rule('/(tax)a$/i', '\1on'),
45 525
            new Rule('/(c)riteria$/i', '\1riterion'),
46 525
            new Rule('/([ti])a$/i', '\1um'),
47 525
            new Rule('/(p)eople$/i', '\1\2erson'),
48 525
            new Rule('/(m)en$/i', '\1an'),
49 525
            new Rule('/(c)hildren$/i', '\1\2hild'),
50 525
            new Rule('/(f)eet$/i', '\1oot'),
51 525
            new Rule('/(n)ews$/i', '\1\2ews'),
52 525
            new Rule('/eaus$/', 'eau'),
53 525
            new Rule('/^(.*us)$/', '\\1'),
54 525
            new Rule('/s$/i', ''),
55
        ];
56
    }
57
58
    /**
59
     * @return Word[]
60
     */
61 526
    public static function getUninflectedWords() : array
62
    {
63
        return [
64 526
            new Word('.*[nrlm]ese'),
65 526
            new Word('.*deer'),
66 526
            new Word('.*fish'),
67 526
            new Word('.*measles'),
68 526
            new Word('.*ois'),
69 526
            new Word('.*pox'),
70 526
            new Word('.*sheep'),
71 526
            new Word('.*ss'),
72 526
            new Word('data'),
73 526
            new Word('police'),
74 526
            new Word('pants'),
75 526
            new Word('clothes'),
76
        ];
77
    }
78
79
    /**
80
     * @return Rule[]
81
     */
82 526
    public static function getIrregularRules() : array
83
    {
84
        return [
85 526
            new Rule('abuses', 'abuse'),
86 526
            new Rule('avalanches', 'avalanche'),
87 526
            new Rule('caches', 'cache'),
88 526
            new Rule('criteria', 'criterion'),
89 526
            new Rule('curves', 'curve'),
90 526
            new Rule('emphases', 'emphasis'),
91 526
            new Rule('foes', 'foe'),
92 526
            new Rule('geese', 'goose'),
93 526
            new Rule('graves', 'grave'),
94 526
            new Rule('hoaxes', 'hoax'),
95 526
            new Rule('media', 'medium'),
96 526
            new Rule('neuroses', 'neurosis'),
97 526
            new Rule('saves', 'save'),
98 526
            new Rule('waves', 'wave'),
99 526
            new Rule('oases', 'oasis'),
100 526
            new Rule('valves', 'valve'),
101
        ];
102
    }
103
}
104