aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/inflector.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2007-06-23 16:47:47 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2007-06-23 16:47:47 +0000
commit46b0e7d1d77c77d013235e3bf99d1afb89513cc9 (patch)
treeec6e353610a5feb717e9e1639b914e1a548d1cca /activesupport/lib/active_support/inflector.rb
parent73fba4faf13394540489063247a887a0d396af2f (diff)
downloadrails-46b0e7d1d77c77d013235e3bf99d1afb89513cc9.tar.gz
rails-46b0e7d1d77c77d013235e3bf99d1afb89513cc9.tar.bz2
rails-46b0e7d1d77c77d013235e3bf99d1afb89513cc9.zip
Added support for pluralization with a different starting letter than the singular version (cow/kine) (closes #4929) [norri_b/hasmanyjosh]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7092 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/lib/active_support/inflector.rb')
-rw-r--r--activesupport/lib/active_support/inflector.rb11
1 files changed, 9 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/inflector.rb b/activesupport/lib/active_support/inflector.rb
index 084c58d389..db6e44e91b 100644
--- a/activesupport/lib/active_support/inflector.rb
+++ b/activesupport/lib/active_support/inflector.rb
@@ -47,8 +47,15 @@ module Inflector
# irregular 'octopus', 'octopi'
# irregular 'person', 'people'
def irregular(singular, plural)
- plural(Regexp.new("(#{singular[0,1]})#{singular[1..-1]}$", "i"), '\1' + plural[1..-1])
- singular(Regexp.new("(#{plural[0,1]})#{plural[1..-1]}$", "i"), '\1' + singular[1..-1])
+ if singular[0,1].upcase == plural[0,1].upcase
+ plural(Regexp.new("(#{singular[0,1]})#{singular[1..-1]}$", "i"), '\1' + plural[1..-1])
+ singular(Regexp.new("(#{plural[0,1]})#{plural[1..-1]}$", "i"), '\1' + singular[1..-1])
+ else
+ plural(Regexp.new("#{singular[0,1].upcase}(?i)#{singular[1..-1]}$"), plural[0,1].upcase + plural[1..-1])
+ plural(Regexp.new("#{singular[0,1].downcase}(?i)#{singular[1..-1]}$"), plural[0,1].downcase + plural[1..-1])
+ singular(Regexp.new("#{plural[0,1].upcase}(?i)#{plural[1..-1]}$"), singular[0,1].upcase + singular[1..-1])
+ singular(Regexp.new("#{plural[0,1].downcase}(?i)#{plural[1..-1]}$"), singular[0,1].downcase + singular[1..-1])
+ end
end
# Add uncountable words that shouldn't be attempted inflected.