diff options
author | Xavier Noria <fxn@hashref.com> | 2012-02-07 14:08:02 -0800 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2012-02-07 14:08:02 -0800 |
commit | 827b520bd1f946471105d9dd9593b9db56b0f6bc (patch) | |
tree | ef9b079ea4af43a655aedec75201623f96f2621b /activesupport/lib | |
parent | 55cc16f502399b69051e4ff5432569bbea45e9c0 (diff) | |
parent | a470d796972749889a27e2070bbd95346bba45ea (diff) | |
download | rails-827b520bd1f946471105d9dd9593b9db56b0f6bc.tar.gz rails-827b520bd1f946471105d9dd9593b9db56b0f6bc.tar.bz2 rails-827b520bd1f946471105d9dd9593b9db56b0f6bc.zip |
Merge pull request #4878 from vijaydev/ordinal-2072
PR #2072 with docs
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/core_ext/integer/inflections.rb | 14 | ||||
-rw-r--r-- | activesupport/lib/active_support/inflector/methods.rb | 34 |
2 files changed, 38 insertions, 10 deletions
diff --git a/activesupport/lib/active_support/core_ext/integer/inflections.rb b/activesupport/lib/active_support/core_ext/integer/inflections.rb index 0e606056c0..1e30687166 100644 --- a/activesupport/lib/active_support/core_ext/integer/inflections.rb +++ b/activesupport/lib/active_support/core_ext/integer/inflections.rb @@ -14,4 +14,18 @@ class Integer def ordinalize ActiveSupport::Inflector.ordinalize(self) end + + # Ordinal returns the suffix used to denote the position + # in an ordered sequence such as 1st, 2nd, 3rd, 4th. + # + # 1.ordinal # => "st" + # 2.ordinal # => "nd" + # 1002.ordinal # => "nd" + # 1003.ordinal # => "rd" + # -11.ordinal # => "th" + # -1001.ordinal # => "st" + # + def ordinal + ActiveSupport::Inflector.ordinal(self) + end end diff --git a/activesupport/lib/active_support/inflector/methods.rb b/activesupport/lib/active_support/inflector/methods.rb index 12dc86aeac..4b7c36f839 100644 --- a/activesupport/lib/active_support/inflector/methods.rb +++ b/activesupport/lib/active_support/inflector/methods.rb @@ -250,6 +250,29 @@ module ActiveSupport end end + # Returns the suffix that should be added to a number to denote the position + # in an ordered sequence such as 1st, 2nd, 3rd, 4th. + # + # Examples: + # ordinal(1) # => "st" + # ordinal(2) # => "nd" + # ordinal(1002) # => "nd" + # ordinal(1003) # => "rd" + # ordinal(-11) # => "th" + # ordinal(-1021) # => "st" + def ordinal(number) + if (11..13).include?(number.to_i.abs % 100) + "th" + else + case number.to_i.abs % 10 + when 1; "st" + when 2; "nd" + when 3; "rd" + else "th" + end + end + end + # Turns a number into an ordinal string used to denote the position in an # ordered sequence such as 1st, 2nd, 3rd, 4th. # @@ -261,16 +284,7 @@ module ActiveSupport # ordinalize(-11) # => "-11th" # ordinalize(-1021) # => "-1021st" def ordinalize(number) - if (11..13).include?(number.to_i.abs % 100) - "#{number}th" - else - case number.to_i.abs % 10 - when 1; "#{number}st" - when 2; "#{number}nd" - when 3; "#{number}rd" - else "#{number}th" - end - end + "#{number}#{ordinal(number)}" end private |