Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

root/trunk/activesupport/lib/active_support/inflections.rb

Revision 7092, 2.1 kB (checked in by david, 1 year ago)

Added support for pluralization with a different starting letter than the singular version (cow/kine) (closes #4929) [norri_b/hasmanyjosh]

Line 
1 Inflector.inflections do |inflect|
2   inflect.plural(/$/, 's')
3   inflect.plural(/s$/i, 's')
4   inflect.plural(/(ax|test)is$/i, '\1es')
5   inflect.plural(/(octop|vir)us$/i, '\1i')
6   inflect.plural(/(alias|status)$/i, '\1es')
7   inflect.plural(/(bu)s$/i, '\1ses')
8   inflect.plural(/(buffal|tomat)o$/i, '\1oes')
9   inflect.plural(/([ti])um$/i, '\1a')
10   inflect.plural(/sis$/i, 'ses')
11   inflect.plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves')
12   inflect.plural(/(hive)$/i, '\1s')
13   inflect.plural(/([^aeiouy]|qu)y$/i, '\1ies')
14   inflect.plural(/(x|ch|ss|sh)$/i, '\1es')
15   inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '\1ices')
16   inflect.plural(/([m|l])ouse$/i, '\1ice')
17   inflect.plural(/^(ox)$/i, '\1en')
18   inflect.plural(/(quiz)$/i, '\1zes')
19
20   inflect.singular(/s$/i, '')
21   inflect.singular(/(n)ews$/i, '\1ews')
22   inflect.singular(/([ti])a$/i, '\1um')
23   inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '\1\2sis')
24   inflect.singular(/(^analy)ses$/i, '\1sis')
25   inflect.singular(/([^f])ves$/i, '\1fe')
26   inflect.singular(/(hive)s$/i, '\1')
27   inflect.singular(/(tive)s$/i, '\1')
28   inflect.singular(/([lr])ves$/i, '\1f')
29   inflect.singular(/([^aeiouy]|qu)ies$/i, '\1y')
30   inflect.singular(/(s)eries$/i, '\1eries')
31   inflect.singular(/(m)ovies$/i, '\1ovie')
32   inflect.singular(/(x|ch|ss|sh)es$/i, '\1')
33   inflect.singular(/([m|l])ice$/i, '\1ouse')
34   inflect.singular(/(bus)es$/i, '\1')
35   inflect.singular(/(o)es$/i, '\1')
36   inflect.singular(/(shoe)s$/i, '\1')
37   inflect.singular(/(cris|ax|test)es$/i, '\1is')
38   inflect.singular(/(octop|vir)i$/i, '\1us')
39   inflect.singular(/(alias|status)es$/i, '\1')
40   inflect.singular(/^(ox)en/i, '\1')
41   inflect.singular(/(vert|ind)ices$/i, '\1ex')
42   inflect.singular(/(matr)ices$/i, '\1ix')
43   inflect.singular(/(quiz)zes$/i, '\1')
44
45   inflect.irregular('person', 'people')
46   inflect.irregular('man', 'men')
47   inflect.irregular('child', 'children')
48   inflect.irregular('sex', 'sexes')
49   inflect.irregular('move', 'moves')
50   inflect.irregular('cow', 'kine')
51
52   inflect.uncountable(%w(equipment information rice money species series fish sheep))
53 end
Note: See TracBrowser for help on using the browser.