mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added Fixnum#ordinalize to turn 1.ordinalize to "1st", 3.ordinalize to "3rd", and 10.ordinalize to "10th" and so on #1724 [paul@cnt.org]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1852 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
80cfa76f7d
commit
33cf8f162e
4 changed files with 72 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
*SVN*
|
||||
|
||||
* Added Fixnum#ordinalize to turn 1.ordinalize to "1st", 3.ordinalize to "3rd", and 10.ordinalize to "10th" and so on #1724 [paul@cnt.org]
|
||||
|
||||
|
||||
*1.1.1* (11 July, 2005)
|
||||
|
||||
* Added more efficient implementation of the development mode reset of classes #1638 [Chris McGrath]
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
require File.dirname(__FILE__) + '/../../inflector'
|
||||
module ActiveSupport #:nodoc:
|
||||
module CoreExtensions #:nodoc:
|
||||
module Fixnum #:nodoc:
|
||||
module Inflections
|
||||
# 1.ordinalize # => "1st"
|
||||
# 3.ordinalize # => "3rd"
|
||||
# 10.ordinalize # => "10th"
|
||||
def ordinalize
|
||||
Inflector.ordinalize(self)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -60,6 +60,19 @@ module Inflector
|
|||
end
|
||||
end
|
||||
|
||||
def ordinalize(number)
|
||||
if (11..13).include?(number.to_i % 100)
|
||||
"#{number}th"
|
||||
else
|
||||
case number.to_i % 10
|
||||
when 1: "#{number}st"
|
||||
when 2: "#{number}nd"
|
||||
when 3: "#{number}rd"
|
||||
else "#{number}th"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def uncountable_words #:doc
|
||||
%w( equipment information rice money species series fish )
|
||||
|
@ -121,4 +134,4 @@ module Inflector
|
|||
[/s$/i, '']
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -131,6 +131,37 @@ class InflectorTest < Test::Unit::TestCase
|
|||
"underground" => "Underground"
|
||||
}
|
||||
|
||||
OrdinalNumbers = {
|
||||
"0" => "0th",
|
||||
"1" => "1st",
|
||||
"2" => "2nd",
|
||||
"3" => "3rd",
|
||||
"4" => "4th",
|
||||
"5" => "5th",
|
||||
"6" => "6th",
|
||||
"7" => "7th",
|
||||
"8" => "8th",
|
||||
"9" => "9th",
|
||||
"10" => "10th",
|
||||
"11" => "11th",
|
||||
"12" => "12th",
|
||||
"13" => "13th",
|
||||
"14" => "14th",
|
||||
"20" => "20th",
|
||||
"21" => "21st",
|
||||
"22" => "22nd",
|
||||
"23" => "23rd",
|
||||
"24" => "24th",
|
||||
"100" => "100th",
|
||||
"101" => "101st",
|
||||
"102" => "102nd",
|
||||
"103" => "103rd",
|
||||
"104" => "104th",
|
||||
"110" => "110th",
|
||||
"1000" => "1000th",
|
||||
"1001" => "1001st"
|
||||
}
|
||||
|
||||
def test_pluralize_plurals
|
||||
assert_equal "plurals", Inflector.pluralize("plurals")
|
||||
assert_equal "Plurals", Inflector.pluralize("Plurals")
|
||||
|
@ -214,4 +245,10 @@ class InflectorTest < Test::Unit::TestCase
|
|||
assert_equal InflectorTest, Inflector.constantize("InflectorTest")
|
||||
assert_raises(NameError) { Inflector.constantize("UnknownClass") }
|
||||
end
|
||||
end
|
||||
|
||||
def test_ordinal
|
||||
OrdinalNumbers.each do |number, ordinalized|
|
||||
assert_equal(ordinalized, Inflector.ordinalize(number))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue