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

Singular::getDefaultRules()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 43
Code Lines 41

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 41
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 41
nc 1
nop 0
dl 0
loc 43
ccs 41
cts 41
cp 1
crap 1
rs 8.8571
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