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

Singular::getIrregularRules()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 17
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 17
nc 1
nop 0
dl 0
loc 19
ccs 17
cts 17
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 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