Completed
Pull Request — master (#96)
by Gabriel
04:43
created

Singular::getDefaultRules()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 42

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 41
CRAP Score 1

Importance

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