mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Fix that irregular plural inflections should not be double-pluralized: 'people'.pluralize should return 'people' not 'peoples'.
[#1183 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
This commit is contained in:
committed by
Jeremy Kemper
parent
84d24cdae8
commit
82dd725fc1
@@ -69,10 +69,13 @@ module ActiveSupport
|
||||
@uncountables.delete(plural)
|
||||
if singular[0,1].upcase == plural[0,1].upcase
|
||||
plural(Regexp.new("(#{singular[0,1]})#{singular[1..-1]}$", "i"), '\1' + plural[1..-1])
|
||||
plural(Regexp.new("(#{plural[0,1]})#{plural[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])
|
||||
plural(Regexp.new("#{plural[0,1].upcase}(?i)#{plural[1..-1]}$"), plural[0,1].upcase + plural[1..-1])
|
||||
plural(Regexp.new("#{plural[0,1].downcase}(?i)#{plural[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
|
||||
|
||||
@@ -256,6 +256,16 @@ class InflectorTest < Test::Unit::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
Irregularities.each do |irregularity|
|
||||
singular, plural = *irregularity
|
||||
ActiveSupport::Inflector.inflections do |inflect|
|
||||
define_method("test_pluralize_of_irregularity_#{plural}_should_be_the_same") do
|
||||
inflect.irregular(singular, plural)
|
||||
assert_equal plural, ActiveSupport::Inflector.pluralize(plural)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
[ :all, [] ].each do |scope|
|
||||
ActiveSupport::Inflector.inflections do |inflect|
|
||||
define_method("test_clear_inflections_with_#{scope.kind_of?(Array) ? "no_arguments" : scope}") do
|
||||
|
||||
Reference in New Issue
Block a user