aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/CHANGELOG2
-rw-r--r--activesupport/lib/active_support/inflector.rb9
-rw-r--r--activesupport/test/inflector_test.rb8
3 files changed, 14 insertions, 5 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG
index a40c945721..2f9948eb0e 100644
--- a/activesupport/CHANGELOG
+++ b/activesupport/CHANGELOG
@@ -1,6 +1,6 @@
*SVN*
-* Added new rules to the Inflector to deal with more unusual plurals mouse/louse => mice/lice, information => information, ox => oxen, photo => photos, archive => archives #1571, #1583, #1490 [foamdino@gmail.com/others]
+* Added new rules to the Inflector to deal with more unusual plurals mouse/louse => mice/lice, information => information, ox => oxen, virus => viri, archive => archives #1571, #1583, #1490, #1599 [foamdino@gmail.com/others]
* 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]
diff --git a/activesupport/lib/active_support/inflector.rb b/activesupport/lib/active_support/inflector.rb
index 1940cfd0ca..2ff9d92b93 100644
--- a/activesupport/lib/active_support/inflector.rb
+++ b/activesupport/lib/active_support/inflector.rb
@@ -58,7 +58,7 @@ module Inflector
def plural_rules #:doc:
[
[/(fish)$/i, '\1\2'], # fish
- [/(information)$/i, '\1'], # information (plural noun)
+ [/(information|equipment|money)$/i, '\1'], # plural nouns
[/^(ox)$/i, '\1\2en'], # ox
[/([m|l])ouse/i, '\1ice'], # mouse, louse
[/(x|ch|ss|sh)$/i, '\1es'], # search, switch, fix, box, process, address
@@ -73,8 +73,10 @@ module Inflector
[/(m)an$/i, '\1\2en'], # man, woman, spokesman
[/(c)hild$/i, '\1\2hildren'], # child
[/(photo)$/i, '\1s'],
- [/(o)$/i, '\1\2es'], # buffalo, tomato
+ [/(buffal|tomat)o$/i, '\1\2oes'], # buffalo, tomato
[/(bu)s$/i, '\1\2ses'], # bus
+ [/(alias)/i, '\1es'], # alias
+ [/([octop|vir])us$/i, '\1i'], # octopus, virus - virus has no defined plural (according to Latin/dictionary.com), but viri is better than viruses/viruss
[/s$/i, 's'], # no change (compatibility)
[/$/, 's']
]
@@ -84,7 +86,8 @@ module Inflector
[
[/(f)ish$/i, '\1\2ish'],
[/^(ox)en/i, '\1'],
- [/(photo)s$/i, '\1'],
+ [/(alias)es$/i, '\1'],
+ [/([octop|vir])i$/i, '\1us'],
[/(o)es/i, '\1'],
[/(bus)es$/i, '\1'],
[/([m|l])ice/i, '\1ouse'],
diff --git a/activesupport/test/inflector_test.rb b/activesupport/test/inflector_test.rb
index 6f088c9c20..310dfa5a22 100644
--- a/activesupport/test/inflector_test.rb
+++ b/activesupport/test/inflector_test.rb
@@ -71,9 +71,15 @@ class InflectorTest < Test::Unit::TestCase
"dwarf" => "dwarves",
"elf" => "elves",
"information" => "information",
+ "equipment" => "equipment",
"bus" => "buses",
"mouse" => "mice",
- "louse" => "lice"
+ "louse" => "lice",
+ "house" => "houses",
+ "octopus" => "octopi",
+ "virus" => "viri",
+ "alias" => "aliases",
+ "portfolio" => "portfolios"
}
CamelToUnderscore = {