diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG index e0057eb72e..d2684da9a1 100644 --- a/activesupport/CHANGELOG +++ b/activesupport/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed that pluralizing an empty string should return the same empty string, not "s" #7720 [josh] + * Added call to inspect on non-string classes for the logger #8533 [codahale] * Deprecation: remove deprecated :mday option from Time, Date, and DateTime#change. [Jeremy Kemper] diff --git a/activesupport/lib/active_support/inflector.rb b/activesupport/lib/active_support/inflector.rb index 39edf64117..baa342f669 100644 --- a/activesupport/lib/active_support/inflector.rb +++ b/activesupport/lib/active_support/inflector.rb @@ -106,7 +106,7 @@ module Inflector def pluralize(word) result = word.to_s.dup - if inflections.uncountables.include?(result.downcase) + if word.empty? || inflections.uncountables.include?(result.downcase) result else inflections.plurals.each { |(rule, replacement)| break if result.gsub!(rule, replacement) } diff --git a/activesupport/test/inflector_test.rb b/activesupport/test/inflector_test.rb index 684150a925..ebf07e1d0f 100644 --- a/activesupport/test/inflector_test.rb +++ b/activesupport/test/inflector_test.rb @@ -220,6 +220,10 @@ class InflectorTest < Test::Unit::TestCase assert_equal "Plurals", Inflector.pluralize("Plurals") end + def test_pluralize_empty_string + assert_equal "", Inflector.pluralize("") + end + SingularToPlural.each do |singular, plural| define_method "test_pluralize_#{singular}" do assert_equal(plural, Inflector.pluralize(singular))