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

Plural::getIrregularRules()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 66
Code Lines 64

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 64
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 64
nc 1
nop 0
dl 0
loc 66
ccs 64
cts 64
cp 1
crap 1
rs 9.3191
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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