mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added :format option to NumberHelper#number_to_currency to enable better localization support #11149 [lylo]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9052 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
75d98db73d
commit
3c0fd445c0
3 changed files with 11 additions and 1 deletions
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* Added :format option to NumberHelper#number_to_currency to enable better localization support #11149 [lylo]
|
||||
|
||||
* Fixed that TextHelper#excerpt would include one character too many #11268 [Irfy]
|
||||
|
||||
* Fix more obscure nested parameter hash parsing bug. #10797 [thomas.lee]
|
||||
|
|
|
@ -54,6 +54,10 @@ module ActionView
|
|||
# * <tt>:unit</tt> - Sets the denomination of the currency (defaults to "$").
|
||||
# * <tt>:separator</tt> - Sets the separator between the units (defaults to ".").
|
||||
# * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults to ",").
|
||||
# * <tt>:format</tt> - Sets the format of the output string (defaults to "%u%n"). The field types are:
|
||||
#
|
||||
# %u The currency unit
|
||||
# %n The number
|
||||
#
|
||||
# ==== Examples
|
||||
# number_to_currency(1234567890.50) # => $1,234,567,890.50
|
||||
|
@ -62,16 +66,19 @@ module ActionView
|
|||
#
|
||||
# number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "")
|
||||
# # => £1234567890,50
|
||||
# number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "", :format => "%n %u")
|
||||
# # => 1234567890,50 £
|
||||
def number_to_currency(number, options = {})
|
||||
options = options.stringify_keys
|
||||
precision = options["precision"] || 2
|
||||
unit = options["unit"] || "$"
|
||||
separator = precision > 0 ? options["separator"] || "." : ""
|
||||
delimiter = options["delimiter"] || ","
|
||||
format = options["format"] || "%u%n"
|
||||
|
||||
begin
|
||||
parts = number_with_precision(number, precision).split('.')
|
||||
unit + number_with_delimiter(parts[0], delimiter) + separator + parts[1].to_s
|
||||
format.gsub(/%n/, number_with_delimiter(parts[0], delimiter) + separator + parts[1].to_s).gsub(/%u/, unit)
|
||||
rescue
|
||||
number
|
||||
end
|
||||
|
|
|
@ -25,6 +25,7 @@ class NumberHelperTest < Test::Unit::TestCase
|
|||
assert_equal("$1,234,567,890.5", number_to_currency(1234567890.50, {:precision => 1}))
|
||||
assert_equal("£1234567890,50", number_to_currency(1234567890.50, {:unit => "£", :separator => ",", :delimiter => ""}))
|
||||
assert_equal("$1,234,567,890.50", number_to_currency("1234567890.50"))
|
||||
assert_equal("1,234,567,890.50 Kč", number_to_currency("1234567890.50", {:unit => "Kč", :format => "%n %u"}))
|
||||
assert_equal("$x.", number_to_currency("x"))
|
||||
assert_nil number_to_currency(nil)
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue