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

Singular::getUninflectedWords()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 1

Importance

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