Skip to content
Browse files

Added new rules to the Inflector to deal with more unusual plurals mo…

…use/louse => mice/lice, information => information, ox => oxen #1571 [foamdino@gmail.com]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1582 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 5ddffc8 commit 64612db7cf85aee8434e7b9b4fd8d6d0249c60e4 @dhh dhh committed Jul 1, 2005
Showing with 22 additions and 1 deletion.
  1. +2 −0 activesupport/CHANGELOG
  2. +9 −0 activesupport/lib/active_support/inflector.rb
  3. +11 −1 activesupport/test/inflector_test.rb
View
2 activesupport/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Added new rules to the Inflector to deal with more unusual plurals mouse/louse => mice/lice, information => information, ox => oxen #1571 [foamdino@gmail.com]
+
* Fixed memory leak with Object#remove_subclasses_of, which inflicted a Rails application running in development mode with a ~20KB leak per request #1289 [c.r.mcgrath@gmail.com]
* Made 1.year == 365.25.days to account for leap years. This allows you to do User.find(:all, :conditions => ['birthday > ?', 50.years.ago]) without losing a lot of days. #1488 [tuxie@dekadance.se]
View
9 activesupport/lib/active_support/inflector.rb
@@ -58,6 +58,9 @@ def constantize(camel_cased_word)
def plural_rules #:doc:
[
[/(fish)$/i, '\1\2'], # fish
+ [/(information)$/i, '\1'], # information (plural noun)
+ [/^(ox)$/i, '\1\2en'], # ox
+ [/([m|l])ouse/i, '\1ice'], # mouse, louse
[/(x|ch|ss|sh)$/i, '\1es'], # search, switch, fix, box, process, address
[/(series)$/i, '\1\2'],
[/([^aeiouy]|qu)ies$/i, '\1y'],
@@ -68,6 +71,8 @@ def plural_rules #:doc:
[/(p)erson$/i, '\1\2eople'], # person, salesperson
[/(m)an$/i, '\1\2en'], # man, woman, spokesman
[/(c)hild$/i, '\1\2hildren'], # child
+ [/(o)$/i, '\1\2es'], # buffalo, tomato
+ [/(bu)s$/i, '\1\2ses'], # bus
[/s$/i, 's'], # no change (compatibility)
[/$/, 's']
]
@@ -76,6 +81,10 @@ def plural_rules #:doc:
def singular_rules #:doc:
[
[/(f)ish$/i, '\1\2ish'],
+ [/^(ox)en/i, '\1'],
+ [/(o)es/i, '\1'],
+ [/(bus)es$/i, '\1'],
+ [/([m|l])ice/i, '\1ouse'],
[/(x|ch|ss|sh)es$/i, '\1'],
[/(m)ovies$/i, '\1\2ovie'],
[/(s)eries$/i, '\1\2eries'],
View
12 activesupport/test/inflector_test.rb
@@ -60,7 +60,17 @@ class InflectorTest < Test::Unit::TestCase
"series" => "series",
- "perspective" => "perspectives"
+ "perspective" => "perspectives",
+
+ "ox" => "oxen",
+ "buffalo" => "buffaloes",
+ "tomato" => "tomatoes",
+ "dwarf" => "dwarves",
+ "elf" => "elves",
+ "information" => "information",
+ "bus" => "buses",
+ "mouse" => "mice",
+ "louse" => "lice"
}
CamelToUnderscore = {

0 comments on commit 64612db

Please sign in to comment.
Something went wrong with that request. Please try again.