提交 4535191c 编写于 作者: R Ryan Oblak

Modified String#pluralize to take an optional count parameter.

上级 c612183a
......@@ -9,14 +9,25 @@
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 @@ def singularize
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
......
......@@ -20,7 +20,7 @@ class Case
class StringInflectionsTest < Test::Unit::TestCase
include InflectorTestCases
include ConstantizeTestCases
def test_erb_escape
string = [192, 60].pack('CC')
expected = 192.chr + "&lt;"
......@@ -64,6 +64,10 @@ def test_pluralize
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 @@ def test_truncate_multibyte
"\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 @@ def to_s
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
......
......@@ -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>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册