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

Plural   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 125
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

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

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getIrregularRules() 0 66 1
B getDefaultRules() 0 28 1
A getUninflectedWords() 0 14 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Inflector\Rules;
6
7
class Plural
8
{
9
    /**
10
     * @return Rule[]
11
     */
12 525
    public static function getDefaultRules() : array
13
    {
14
        return [
15 525
            new Rule('/(s)tatus$/i', '\1\2tatuses'),
16 525
            new Rule('/(quiz)$/i', '\1zes'),
17 525
            new Rule('/^(ox)$/i', '\1\2en'),
18 525
            new Rule('/([m|l])ouse$/i', '\1ice'),
19 525
            new Rule('/(matr|vert|ind)(ix|ex)$/i', '\1ices'),
20 525
            new Rule('/(x|ch|ss|sh)$/i', '\1es'),
21 525
            new Rule('/([^aeiouy]|qu)y$/i', '\1ies'),
22 525
            new Rule('/(hive|gulf)$/i', '\1s'),
23 525
            new Rule('/(?:([^f])fe|([lr])f)$/i', '\1\2ves'),
24 525
            new Rule('/sis$/i', 'ses'),
25 525
            new Rule('/([ti])um$/i', '\1a'),
26 525
            new Rule('/(tax)on$/i', '\1a'),
27 525
            new Rule('/(c)riterion$/i', '\1riteria'),
28 525
            new Rule('/(p)erson$/i', '\1eople'),
29 525
            new Rule('/(m)an$/i', '\1en'),
30 525
            new Rule('/(c)hild$/i', '\1hildren'),
31 525
            new Rule('/(f)oot$/i', '\1eet'),
32 525
            new Rule('/(buffal|her|potat|tomat|volcan)o$/i', '\1\2oes'),
33 525
            new Rule('/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|vir)us$/i', '\1i'),
34 525
            new Rule('/us$/i', 'uses'),
35 525
            new Rule('/(alias)$/i', '\1es'),
36 525
            new Rule('/(analys|ax|cris|test|thes)is$/i', '\1es'),
37 525
            new Rule('/s$/', 's'),
38 525
            new Rule('/^$/', ''),
39 525
            new Rule('/$/', 's'),
40
        ];
41
    }
42
43
    /**
44
     * @return Word[]
45
     */
46 525
    public static function getUninflectedWords() : array
47
    {
48
        return [
49 525
            new Word('.*[nrlm]ese'),
50 525
            new Word('.*deer'),
51 525
            new Word('.*fish'),
52 525
            new Word('.*measles'),
53 525
            new Word('.*ois'),
54 525
            new Word('.*pox'),
55 525
            new Word('.*sheep'),
56 525
            new Word('people'),
57 525
            new Word('cookie'),
58 525
            new Word('police'),
59 525
            new Word('middleware'),
60
        ];
61
    }
62
63
    /**
64
     * @return Rule[]
65
     */
66 527
    public static function getIrregularRules() : array
67
    {
68
        return [
69 527
            new Rule('atlas', 'atlases'),
70 527
            new Rule('axe', 'axes'),
71 527
            new Rule('beef', 'beefs'),
72 527
            new Rule('brother', 'brothers'),
73 527
            new Rule('cafe', 'cafes'),
74 527
            new Rule('chateau', 'chateaux'),
75 527
            new Rule('niveau', 'niveaux'),
76 527
            new Rule('child', 'children'),
77 527
            new Rule('cookie', 'cookies'),
78 527
            new Rule('corpus', 'corpuses'),
79 527
            new Rule('cow', 'cows'),
80 527
            new Rule('criterion', 'criteria'),
81 527
            new Rule('curriculum', 'curricula'),
82 527
            new Rule('demo', 'demos'),
83 527
            new Rule('domino', 'dominoes'),
84 527
            new Rule('echo', 'echoes'),
85 527
            new Rule('foot', 'feet'),
86 527
            new Rule('fungus', 'fungi'),
87 527
            new Rule('ganglion', 'ganglions'),
88 527
            new Rule('genie', 'genies'),
89 527
            new Rule('genus', 'genera'),
90 527
            new Rule('goose', 'geese'),
91 527
            new Rule('graffito', 'graffiti'),
92 527
            new Rule('hippopotamus', 'hippopotami'),
93 527
            new Rule('hoof', 'hoofs'),
94 527
            new Rule('human', 'humans'),
95 527
            new Rule('iris', 'irises'),
96 527
            new Rule('larva', 'larvae'),
97 527
            new Rule('leaf', 'leaves'),
98 527
            new Rule('loaf', 'loaves'),
99 527
            new Rule('man', 'men'),
100 527
            new Rule('medium', 'media'),
101 527
            new Rule('memorandum', 'memoranda'),
102 527
            new Rule('money', 'monies'),
103 527
            new Rule('mongoose', 'mongooses'),
104 527
            new Rule('motto', 'mottoes'),
105 527
            new Rule('move', 'moves'),
106 527
            new Rule('mythos', 'mythoi'),
107 527
            new Rule('niche', 'niches'),
108 527
            new Rule('nucleus', 'nuclei'),
109 527
            new Rule('numen', 'numina'),
110 527
            new Rule('occiput', 'occiputs'),
111 527
            new Rule('octopus', 'octopuses'),
112 527
            new Rule('opus', 'opuses'),
113 527
            new Rule('ox', 'oxen'),
114 527
            new Rule('passerby', 'passersby'),
115 527
            new Rule('penis', 'penises'),
116 527
            new Rule('person', 'people'),
117 527
            new Rule('plateau', 'plateaux'),
118 527
            new Rule('runner-up', 'runners-up'),
119 527
            new Rule('safe', 'safes'),
120 527
            new Rule('sex', 'sexes'),
121 527
            new Rule('soliloquy', 'soliloquies'),
122 527
            new Rule('son-in-law', 'sons-in-law'),
123 527
            new Rule('syllabus', 'syllabi'),
124 527
            new Rule('testis', 'testes'),
125 527
            new Rule('thief', 'thieves'),
126 527
            new Rule('tooth', 'teeth'),
127 527
            new Rule('tornado', 'tornadoes'),
128 527
            new Rule('trilby', 'trilbys'),
129 527
            new Rule('turf', 'turfs'),
130 527
            new Rule('valve', 'valves'),
131 527
            new Rule('volcano', 'volcanoes'),
132
        ];
133
    }
134
}
135