diff options
3 files changed, 30 insertions, 7 deletions
diff --git a/activesupport/lib/active_support/core_ext/string/inflections.rb b/activesupport/lib/active_support/core_ext/string/inflections.rb index c7ceeb9de4..fd91b3cacb 100644 --- a/activesupport/lib/active_support/core_ext/string/inflections.rb +++ b/activesupport/lib/active_support/core_ext/string/inflections.rb @@ -9,14 +9,25 @@ require 'active_support/inflector/transliterate'  class String    # Returns the plural form of the word in the string.    # +  # If the optional parameter +count+ is specified, +  # the singular form will be returned if <tt>count == 1</tt>. +  # For any other value of +count+ the plural will be returned. +  # +  # ==== Examples    #   "post".pluralize             # => "posts"    #   "octopus".pluralize          # => "octopi"    #   "sheep".pluralize            # => "sheep"    #   "words".pluralize            # => "words"    #   "the blue mailman".pluralize # => "the blue mailmen"    #   "CamelOctopus".pluralize     # => "CamelOctopi" -  def pluralize -    ActiveSupport::Inflector.pluralize(self) +  #   "apple".pluralize(1)         # => "apple" +  #   "apple".pluralize(2)         # => "apples" +  def pluralize(count = nil) +    if count == 1 +      self +    else +      ActiveSupport::Inflector.pluralize(self) +    end    end    # The reverse of +pluralize+, returns the singular form of a word in a string. @@ -42,7 +53,7 @@ class String    def constantize      ActiveSupport::Inflector.constantize(self)    end -   +    # +safe_constantize+ tries to find a declared constant with the name specified    # in the string. It returns nil when the name is not in CamelCase    # or is not initialized.  See ActiveSupport::Inflector.safe_constantize diff --git a/activesupport/test/core_ext/string_ext_test.rb b/activesupport/test/core_ext/string_ext_test.rb index 5c1dddaf96..4d876954cf 100644 --- a/activesupport/test/core_ext/string_ext_test.rb +++ b/activesupport/test/core_ext/string_ext_test.rb @@ -20,7 +20,7 @@ end  class StringInflectionsTest < Test::Unit::TestCase    include InflectorTestCases    include ConstantizeTestCases -   +    def test_erb_escape      string = [192, 60].pack('CC')      expected = 192.chr + "<" @@ -64,6 +64,10 @@ class StringInflectionsTest < Test::Unit::TestCase      end      assert_equal("plurals", "plurals".pluralize) + +    assert_equal("blargles", "blargle".pluralize(0)) +    assert_equal("blargle", "blargle".pluralize(1)) +    assert_equal("blargles", "blargle".pluralize(2))    end    def test_singularize @@ -301,13 +305,13 @@ class StringInflectionsTest < Test::Unit::TestCase          "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 \354\225\204\353\235\274\353\246\254\354\230\244".force_encoding('UTF-8').truncate(10)      end    end -   +    def test_constantize      run_constantize_tests_on do |string|        string.constantize      end    end -   +    def test_safe_constantize      run_safe_constantize_tests_on do |string|        string.safe_constantize @@ -381,7 +385,7 @@ class OutputSafetyTest < ActiveSupport::TestCase    test "A fixnum is safe by default" do      assert 5.html_safe?    end -   +    test "a float is safe by default" do      assert 5.7.html_safe?    end diff --git a/railties/guides/source/active_support_core_extensions.textile b/railties/guides/source/active_support_core_extensions.textile index ecc25c4f1c..c04e49281e 100644 --- a/railties/guides/source/active_support_core_extensions.textile +++ b/railties/guides/source/active_support_core_extensions.textile @@ -1426,6 +1426,14 @@ The method +pluralize+ returns the plural of its receiver:  As the previous example shows, Active Support knows some irregular plurals and uncountable nouns. Built-in rules can be extended in +config/initializers/inflections.rb+. That file is generated by the +rails+ command and has instructions in comments. ++pluralize+ can also take an optional +count+ parameter.  If <tt>count == 1</tt> the singular form will be returned.  For any other value of +count+ the plural form will be returned: + +<ruby> +"dude".pluralize(0) # => "dudes" +"dude".pluralize(1) # => "dude" +"dude".pluralize(2) # => "dudes" +</ruby> +  Active Record uses this method to compute the default table name that corresponds to a model:  <ruby>  | 
