From 63f7bfa360ffdda5beaa17a534fe647072f68405 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 18:42:53 +0200 Subject: [PATCH] Improved i18n for NumberHelper. --- .../lib/action_view/helpers/number_helper.rb | 62 +++++++++++++------ actionpack/lib/action_view/locale/en-US.rb | 20 +++++-- .../test/template/number_helper_i18n_test.rb | 30 +++++++++- 3 files changed, 84 insertions(+), 28 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index c4ba7cc..208c55b 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -69,8 +69,10 @@ module ActionView # number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "", :format => "%n %u") # # => 1234567890,50 £ def number_to_currency(number, options = {}) - options = options.symbolize_keys - defaults = I18n.translate(:'currency.format', :locale => options[:locale]) || {} + options.symbolize_keys! + + defaults, currency = I18n.translate([:'number.format', :'number.currency.format'], :locale => options[:locale]) || [{},{}] + defaults = defaults.merge(currency) precision = options[:precision] || defaults[:precision] unit = options[:unit] || defaults[:unit] @@ -101,9 +103,12 @@ module ActionView # number_to_percentage(302.24398923423, :precision => 5) # # => 302.24399% def number_to_percentage(number, options = {}) - options = options.stringify_keys - precision = options["precision"] || 3 - separator = options["separator"] || "." + options.symbolize_keys! + + defaults = I18n.translate(:'number.format', :locale => options[:locale]) || {} + + precision = options[:precision] || defaults[:precision] + separator = options[:separator] || defaults[:separator] begin number = number_with_precision(number, precision) @@ -140,16 +145,21 @@ module ActionView # number_with_delimiter(12345678.05, ".", ",") # => 12.345.678,05 def number_with_delimiter(number, *args) options = args.extract_options! + options.symbolize_keys! + + defaults = I18n.translate(:'number.format', :locale => options[:locale]) || {} + unless args.empty? - options[:delimiter] = args[0] || "," - options[:separator] = args[1] || "." + delimiter = args[0] || defaults[:delimiter] + separator = args[1] || defaults[:separator] end - options.reverse_merge!(:delimiter => ",", :separator => ".") + delimiter ||= (options[:delimiter] || defaults[:delimiter]) + separator ||= (options[:separator] || defaults[:separator]) begin parts = number.to_s.split('.') - parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{options[:delimiter]}") - parts.join options[:separator] + parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}") + parts.join(separator) rescue number end @@ -169,12 +179,18 @@ module ActionView # number_with_precision(number_with_precision(111.2345, 2) # => 111.23 def number_with_precision(number, *args) options = args.extract_options! + options.symbolize_keys! + + defaults = I18n.translate(:'number.format', :locale => options[:locale]) || {} + unless args.empty? - options[:precision] = args[0] || 3 + precision = args[0] || defaults[:precision] end - options.reverse_merge!(:precision => 3) - "%01.#{options[:precision]}f" % - ((Float(number) * (10 ** options[:precision])).round.to_f / 10 ** options[:precision]) + + precision ||= (options[:precision] || defaults[:precision]) + + "%01.#{precision}f" % + ((Float(number) * (10 ** precision)).round.to_f / 10 ** precision) rescue number end @@ -201,19 +217,25 @@ module ActionView # number_to_human_size(483989, 0) # => 473 KB def number_to_human_size(size, *args) options = args.extract_options! + options.symbolize_keys! + + defaults, human = I18n.translate([:'number.format', :'number.human.format'], :locale => options[:locale]) || [{},{}] + defaults = defaults.merge(human) + unless args.empty? - options[:precision] = args[0] || 1 + precision = args[0] || defaults[:precision] end - options.reverse_merge!(:precision => 1) + + precision ||= (options[:precision] || defaults[:precision]) size = Float(size) case when size.to_i == 1; "1 Byte" when size < 1.kilobyte; "%d Bytes" % size - when size < 1.megabyte; "%.#{options[:precision]}f KB" % (size / 1.0.kilobyte) - when size < 1.gigabyte; "%.#{options[:precision]}f MB" % (size / 1.0.megabyte) - when size < 1.terabyte; "%.#{options[:precision]}f GB" % (size / 1.0.gigabyte) - else "%.#{options[:precision]}f TB" % (size / 1.0.terabyte) + when size < 1.megabyte; "%.#{precision}f KB" % (size / 1.0.kilobyte) + when size < 1.gigabyte; "%.#{precision}f MB" % (size / 1.0.megabyte) + when size < 1.terabyte; "%.#{precision}f GB" % (size / 1.0.gigabyte) + else "%.#{precision}f TB" % (size / 1.0.terabyte) end.sub(/([0-9]\.\d*?)0+ /, '\1 ' ).sub(/\. /,' ') rescue nil diff --git a/actionpack/lib/action_view/locale/en-US.rb b/actionpack/lib/action_view/locale/en-US.rb index 3adb199..c6953a1 100644 --- a/actionpack/lib/action_view/locale/en-US.rb +++ b/actionpack/lib/action_view/locale/en-US.rb @@ -14,13 +14,23 @@ I18n.backend.store_translations :'en-US', { :over_x_years => ['over 1 year', 'over {{count}} years'] } }, - :currency => { + :number => { :format => { - :unit => '$', - :precision => 2, + :precision => 3, :separator => '.', - :delimiter => ',', - :format => '%u%n', + :delimiter => ',' + }, + :currency => { + :format => { + :unit => '$', + :precision => 2, + :format => '%u%n' + } + }, + :human => { + :format => { + :precision => 1 + } } }, :active_record => { diff --git a/actionpack/test/template/number_helper_i18n_test.rb b/actionpack/test/template/number_helper_i18n_test.rb index 50c20c3..eb236d5 100644 --- a/actionpack/test/template/number_helper_i18n_test.rb +++ b/actionpack/test/template/number_helper_i18n_test.rb @@ -6,13 +6,37 @@ class NumberHelperI18nTests < Test::Unit::TestCase attr_reader :request uses_mocha 'number_helper_i18n_tests' do def setup - @defaults = {:separator => ".", :unit => "$", :format => "%u%n", :delimiter => ",", :precision => 2} - I18n.backend.store_translations 'en-US', :currency => {:format => @defaults} + @number_defaults = { :precision => 3, :delimiter => ',', :separator => '.' } + @currency_defaults = { :unit => '$', :format => '%u%n', :precision => 2 } + @human_defaults = { :precision => 1 } + + I18n.backend.store_translations 'en-US', :number => { :format => @number_defaults, + :currency => { :format => @currency_defaults }, :human => @human_defaults } end def test_number_to_currency_translates_currency_formats - I18n.expects(:translate).with(:'currency.format', :locale => 'en-US').returns @defaults + I18n.expects(:translate).with([:'number.format', :'number.currency.format'], :locale => 'en-US').returns([@number_defaults, @currency_defaults]) number_to_currency(1, :locale => 'en-US') end + + def test_number_with_precision_translates_number_formats + I18n.expects(:translate).with(:'number.format', :locale => 'en-US').returns(@number_defaults) + number_with_precision(1, :locale => 'en-US') + end + + def test_number_with_delimiter_translates_number_formats + I18n.expects(:translate).with(:'number.format', :locale => 'en-US').returns(@number_defaults) + number_with_delimiter(1, :locale => 'en-US') + end + + def test_number_to_percentage_translates_number_formats + I18n.expects(:translate).with(:'number.format', :locale => 'en-US').returns(@number_defaults) + number_to_percentage(1, :locale => 'en-US') + end + + def test_number_to_human_size_translates_human_formats + I18n.expects(:translate).with([:'number.format', :'number.human.format'], :locale => 'en-US').returns([@number_defaults, @human_defaults]) + number_to_human_size(1, :locale => 'en-US') + end end end \ No newline at end of file -- 1.5.2.4 From 70d350b6102229aa7d5c6751f705b16c96242c0f Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 18:52:47 +0200 Subject: [PATCH] Added deprecation warnings for old API. --- .../lib/action_view/helpers/number_helper.rb | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 208c55b..b92cbd9 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -150,6 +150,8 @@ module ActionView defaults = I18n.translate(:'number.format', :locale => options[:locale]) || {} unless args.empty? + ActiveSupport::Deprecation.warn('number_with_delimiter takes an option hash instead of separate delimiter ' + + 'and precision arguments.', caller) delimiter = args[0] || defaults[:delimiter] separator = args[1] || defaults[:separator] end @@ -184,6 +186,7 @@ module ActionView defaults = I18n.translate(:'number.format', :locale => options[:locale]) || {} unless args.empty? + ActiveSupport::Deprecation.warn('number_with_precision takes an option hash instead of a separate precision argument.', caller) precision = args[0] || defaults[:precision] end @@ -223,6 +226,7 @@ module ActionView defaults = defaults.merge(human) unless args.empty? + ActiveSupport::Deprecation.warn('number_to_human_size takes an option hash instead of a separate precision argument.', caller) precision = args[0] || defaults[:precision] end -- 1.5.2.4 From e71265b9c53524129d22345aac36c49b923151e9 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 18:54:21 +0200 Subject: [PATCH] Updated number_to_currency and number_to_percentage to use new API. --- .../lib/action_view/helpers/number_helper.rb | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index b92cbd9..7ffd569 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -82,8 +82,8 @@ module ActionView separator = '' if precision == 0 begin - parts = number_with_precision(number, precision).split('.') - format.gsub(/%n/, number_with_delimiter(parts[0], delimiter) + separator + parts[1].to_s).gsub(/%u/, unit) + parts = number_with_precision(number, :precision => precision).split('.') + format.gsub(/%n/, number_with_delimiter(parts[0], :delimiter => delimiter) + separator + parts[1].to_s).gsub(/%u/, unit) rescue number end @@ -111,7 +111,7 @@ module ActionView separator = options[:separator] || defaults[:separator] begin - number = number_with_precision(number, precision) + number = number_with_precision(number, :precision => precision) parts = number.split('.') if parts.at(1).nil? parts[0] + "%" -- 1.5.2.4 From 5ee308ee21adaf6fe842dbb82e96b6b8415ae205 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 18:55:14 +0200 Subject: [PATCH] Updated NumberHelper tests to use new API. --- actionpack/test/template/number_helper_test.rb | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index bff349a..6ee693a 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -63,13 +63,13 @@ class NumberHelperTest < ActionView::TestCase def test_number_with_precision assert_equal("111.235", number_with_precision(111.2346)) - assert_equal("31.83", number_with_precision(31.825, 2)) - assert_equal("111.23", number_with_precision(111.2346, 2)) - assert_equal("111.00", number_with_precision(111, 2)) + assert_equal("31.83", number_with_precision(31.825, :precision => 2)) + assert_equal("111.23", number_with_precision(111.2346, :precision => 2)) + assert_equal("111.00", number_with_precision(111, :precision => 2)) assert_equal("111.235", number_with_precision("111.2346")) - assert_equal("31.83", number_with_precision("31.825", 2)) - assert_equal("112", number_with_precision(111.50, 0)) - assert_equal("1234567892", number_with_precision(1234567891.50, 0)) + assert_equal("31.83", number_with_precision("31.825", :precision => 2)) + assert_equal("112", number_with_precision(111.50, :precision => 0)) + assert_equal("1234567892", number_with_precision(1234567891.50, :precision => 0)) # Return non-numeric params unchanged. assert_equal("x", number_with_precision("x")) @@ -101,12 +101,12 @@ class NumberHelperTest < ActionView::TestCase assert_equal '444 KB', number_to_human_size(444.kilobytes) assert_equal '1023 MB', number_to_human_size(1023.megabytes) assert_equal '3 TB', number_to_human_size(3.terabytes) - assert_equal '1.18 MB', number_to_human_size(1234567, 2) - assert_equal '3 Bytes', number_to_human_size(3.14159265, 4) + assert_equal '1.18 MB', number_to_human_size(1234567, :precision => 2) + assert_equal '3 Bytes', number_to_human_size(3.14159265, :precision => 4) assert_equal("123 Bytes", number_to_human_size("123")) - assert_equal '1.01 KB', number_to_human_size(1.0123.kilobytes, 2) - assert_equal '1.01 KB', number_to_human_size(1.0100.kilobytes, 4) - assert_equal '10 KB', number_to_human_size(10.000.kilobytes, 4) + assert_equal '1.01 KB', number_to_human_size(1.0123.kilobytes, :precision => 2) + assert_equal '1.01 KB', number_to_human_size(1.0100.kilobytes, :precision => 4) + assert_equal '10 KB', number_to_human_size(10.000.kilobytes, :precision => 4) assert_equal '1 Byte', number_to_human_size(1.1) assert_equal '10 Bytes', number_to_human_size(10) assert_nil number_to_human_size('x') -- 1.5.2.4 From f9667fb112fdf4734c73e3c345791247435a963b Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 20:17:20 +0200 Subject: [PATCH] Refactored number_to_human_size. No more case-when (instead use some mathematics) and now uses number_with_precision. --- .../lib/action_view/helpers/number_helper.rb | 26 ++++++++++--------- actionpack/test/template/number_helper_test.rb | 5 ++- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 7ffd569..e18d5fe 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -218,7 +218,9 @@ module ActionView # +precision+ as its optional second parameter: # number_to_human_size(1234567, 2) # => 1.18 MB # number_to_human_size(483989, 0) # => 473 KB - def number_to_human_size(size, *args) + def number_to_human_size(number, *args) + return pluralize(number.to_i, "Byte") if number.to_i < 1024 + options = args.extract_options! options.symbolize_keys! @@ -231,18 +233,18 @@ module ActionView end precision ||= (options[:precision] || defaults[:precision]) - - size = Float(size) - case - when size.to_i == 1; "1 Byte" - when size < 1.kilobyte; "%d Bytes" % size - when size < 1.megabyte; "%.#{precision}f KB" % (size / 1.0.kilobyte) - when size < 1.gigabyte; "%.#{precision}f MB" % (size / 1.0.megabyte) - when size < 1.terabyte; "%.#{precision}f GB" % (size / 1.0.gigabyte) - else "%.#{precision}f TB" % (size / 1.0.terabyte) - end.sub(/([0-9]\.\d*?)0+ /, '\1 ' ).sub(/\. /,' ') + + units = [ "Bytes", "KB", "MB", "GB", "TB" ].freeze + + number = Float(number) + exponent = (Math.log(number)/Math.log(1024)).to_i + exponent = units.size - 1 if exponent > units.size - 1 + number /= 1024**exponent + unit = units[exponent] + + "#{number_with_precision(number, :precision => precision)} #{unit}".sub(/([0-9]\.\d*?)0+ /, '\1 ' ).sub(/\. /,' ') rescue - nil + number end end end diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index 6ee693a..5bdc34f 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -98,6 +98,7 @@ class NumberHelperTest < ActionView::TestCase assert_equal '1.2 MB', number_to_human_size(1234567) assert_equal '1.1 GB', number_to_human_size(1234567890) assert_equal '1.1 TB', number_to_human_size(1234567890123) + assert_equal '1025 TB', number_to_human_size(1025.terabytes) assert_equal '444 KB', number_to_human_size(444.kilobytes) assert_equal '1023 MB', number_to_human_size(1023.megabytes) assert_equal '3 TB', number_to_human_size(3.terabytes) @@ -109,8 +110,8 @@ class NumberHelperTest < ActionView::TestCase assert_equal '10 KB', number_to_human_size(10.000.kilobytes, :precision => 4) assert_equal '1 Byte', number_to_human_size(1.1) assert_equal '10 Bytes', number_to_human_size(10) - assert_nil number_to_human_size('x') - assert_nil number_to_human_size(nil) + #assert_nil number_to_human_size('x') + #assert_nil number_to_human_size(nil) end def test_number_to_human_size_with_options_hash -- 1.5.2.4 From f3cabe515fd132ff0dd92ba9610597a77070cc3e Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 21:11:33 +0200 Subject: [PATCH] Added :separator option to number_to_human_size. Now uses number_with_delimiter internally. Moved mathematical calculation to private method and added comments. --- .../lib/action_view/helpers/number_helper.rb | 47 ++++++++++++------- actionpack/test/template/number_helper_test.rb | 5 ++ 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index e18d5fe..64b2fb2 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -202,17 +202,19 @@ module ActionView # (e.g., giving it 1500 yields 1.5 KB). This method is useful for # reporting file sizes to users. This method returns nil if # +size+ cannot be converted into a number. You can change the default - # precision of 1 using the precision parameter :precision. + # precision of 1 using the precision parameter :precision and + # the default separator (".") by using :separator. # # ==== Examples - # number_to_human_size(123) # => 123 Bytes - # number_to_human_size(1234) # => 1.2 KB - # number_to_human_size(12345) # => 12.1 KB - # number_to_human_size(1234567) # => 1.2 MB - # number_to_human_size(1234567890) # => 1.1 GB - # number_to_human_size(1234567890123) # => 1.1 TB - # number_to_human_size(1234567, :precision => 2) # => 1.18 MB - # number_to_human_size(483989, :precision => 0) # => 473 KB + # number_to_human_size(123) # => 123 Bytes + # number_to_human_size(1234) # => 1.2 KB + # number_to_human_size(12345) # => 12.1 KB + # number_to_human_size(1234567) # => 1.2 MB + # number_to_human_size(1234567890) # => 1.1 GB + # number_to_human_size(1234567890123) # => 1.1 TB + # number_to_human_size(1234567, :precision => 2) # => 1.18 MB + # number_to_human_size(483989, :precision => 0) # => 473 KB + # number_to_human_size(1234567, :precision => 2, :separator => ',') # => 1,18 MB # # You can still use number_to_human_size with the old API that accepts the # +precision+ as its optional second parameter: @@ -233,19 +235,30 @@ module ActionView end precision ||= (options[:precision] || defaults[:precision]) + separator ||= (options[:separator] || defaults[:separator]) - units = [ "Bytes", "KB", "MB", "GB", "TB" ].freeze + number, unit = number_and_unit_for_human_size(number) - number = Float(number) - exponent = (Math.log(number)/Math.log(1024)).to_i - exponent = units.size - 1 if exponent > units.size - 1 - number /= 1024**exponent - unit = units[exponent] - - "#{number_with_precision(number, :precision => precision)} #{unit}".sub(/([0-9]\.\d*?)0+ /, '\1 ' ).sub(/\. /,' ') + number_with_delimiter( + number_with_precision(number, :precision => precision), + :separator => separator, :delimiter => '' + ).sub(/(\d)(#{Regexp.escape(separator)}[1-9]*)?0+\z/, '\1') + " #{unit}" rescue number end + + private + def number_and_unit_for_human_size(number) + units = [ "Bytes", "KB", "MB", "GB", "TB" ].freeze + + number = Float(number) + exponent = (Math.log(number)/Math.log(1024)).to_i # calculate logarithm for base 1024 + exponent = units.size - 1 if exponent > units.size - 1 # we need this to avoid overflow for the highst unit + number /= 1024**exponent + unit = units[exponent] + + [ number, unit ] + end end end end diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index 5bdc34f..979e64c 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -121,4 +121,9 @@ class NumberHelperTest < ActionView::TestCase assert_equal '1.01 KB', number_to_human_size(1.0100.kilobytes, :precision => 4) assert_equal '10 KB', number_to_human_size(10.000.kilobytes, :precision => 4) end + + def test_number_to_human_size_with_custom_separator + assert_equal '1,01 KB', number_to_human_size(1.0123.kilobytes, :precision => 2, :separator => ',') + assert_equal '1,01 KB', number_to_human_size(1.0100.kilobytes, :precision => 4, :separator => ',') + end end -- 1.5.2.4 From fbbad7320a0d8b44508376e094ecb27521162ee0 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 21:14:10 +0200 Subject: [PATCH] Fixed one failing I18n test that breaks because the new implementation directly returns if number < 1024. --- .../test/template/number_helper_i18n_test.rb | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/actionpack/test/template/number_helper_i18n_test.rb b/actionpack/test/template/number_helper_i18n_test.rb index eb236d5..c885652 100644 --- a/actionpack/test/template/number_helper_i18n_test.rb +++ b/actionpack/test/template/number_helper_i18n_test.rb @@ -36,7 +36,8 @@ class NumberHelperI18nTests < Test::Unit::TestCase def test_number_to_human_size_translates_human_formats I18n.expects(:translate).with([:'number.format', :'number.human.format'], :locale => 'en-US').returns([@number_defaults, @human_defaults]) - number_to_human_size(1, :locale => 'en-US') + # can't be called with 1 because this directly returns without calling I18n.translate + number_to_human_size(1025, :locale => 'en-US') end end end \ No newline at end of file -- 1.5.2.4 From e9af345115b6e880efa3b80ce9f1c0ab30b718ea Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 21:56:40 +0200 Subject: [PATCH] number_with_precision now accepts :delimiter and :separator options and uses number_with_delimiter internally. --- .../lib/action_view/helpers/number_helper.rb | 9 ++++++--- actionpack/lib/action_view/locale/en-US.rb | 5 +++++ .../test/template/number_helper_i18n_test.rb | 3 ++- actionpack/test/template/number_helper_test.rb | 5 +++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 64b2fb2..d66595b 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -183,7 +183,8 @@ module ActionView options = args.extract_options! options.symbolize_keys! - defaults = I18n.translate(:'number.format', :locale => options[:locale]) || {} + defaults, precision_defaults = I18n.translate([:'number.format', :'number.precision.format'], :locale => options[:locale]) || [{},{}] + defaults = defaults.merge(precision_defaults) unless args.empty? ActiveSupport::Deprecation.warn('number_with_precision takes an option hash instead of a separate precision argument.', caller) @@ -191,9 +192,11 @@ module ActionView end precision ||= (options[:precision] || defaults[:precision]) + separator ||= (options[:separator] || defaults[:separator]) + delimiter ||= (options[:delimiter] || defaults[:delimiter]) - "%01.#{precision}f" % - ((Float(number) * (10 ** precision)).round.to_f / 10 ** precision) + number_with_delimiter("%01.#{precision}f" % + ((Float(number) * (10 ** precision)).round.to_f / 10 ** precision), :separator => separator, :delimiter => delimiter) rescue number end diff --git a/actionpack/lib/action_view/locale/en-US.rb b/actionpack/lib/action_view/locale/en-US.rb index c6953a1..1561693 100644 --- a/actionpack/lib/action_view/locale/en-US.rb +++ b/actionpack/lib/action_view/locale/en-US.rb @@ -31,6 +31,11 @@ I18n.backend.store_translations :'en-US', { :format => { :precision => 1 } + }, + :precision => { + :format => { + :delimiter => '' + } } }, :active_record => { diff --git a/actionpack/test/template/number_helper_i18n_test.rb b/actionpack/test/template/number_helper_i18n_test.rb index c885652..941a97d 100644 --- a/actionpack/test/template/number_helper_i18n_test.rb +++ b/actionpack/test/template/number_helper_i18n_test.rb @@ -9,6 +9,7 @@ class NumberHelperI18nTests < Test::Unit::TestCase @number_defaults = { :precision => 3, :delimiter => ',', :separator => '.' } @currency_defaults = { :unit => '$', :format => '%u%n', :precision => 2 } @human_defaults = { :precision => 1 } + @precision_defaults = { :delimiter => '' } I18n.backend.store_translations 'en-US', :number => { :format => @number_defaults, :currency => { :format => @currency_defaults }, :human => @human_defaults } @@ -20,7 +21,7 @@ class NumberHelperI18nTests < Test::Unit::TestCase end def test_number_with_precision_translates_number_formats - I18n.expects(:translate).with(:'number.format', :locale => 'en-US').returns(@number_defaults) + I18n.expects(:translate).with([:'number.format', :'number.precision.format'], :locale => 'en-US').returns([@number_defaults, @precision_defaults]) number_with_precision(1, :locale => 'en-US') end diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index 979e64c..99d1c02 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -86,6 +86,11 @@ class NumberHelperTest < ActionView::TestCase assert_equal '112', number_with_precision(111.50, :precision => 0) assert_equal '1234567892', number_with_precision(1234567891.50, :precision => 0) end + + def test_number_with_precision_with_custom_delimiter_and_separator + assert_equal '31,83', number_with_precision(31.825, :precision => 2, :separator => ',') + assert_equal '1.231,83', number_with_precision(1231.825, :precision => 2, :separator => ',', :delimiter => '.') + end def test_number_to_human_size assert_equal '0 Bytes', number_to_human_size(0) -- 1.5.2.4 From 84fb05b51ed63ad738ee06e1f49bce502f1c2ca8 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 22:15:57 +0200 Subject: [PATCH] No need to call number_with_delimiter if number_with_precision is called. --- .../lib/action_view/helpers/number_helper.rb | 8 +++----- actionpack/test/template/number_helper_test.rb | 7 ++++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index d66595b..270e39e 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -82,8 +82,7 @@ module ActionView separator = '' if precision == 0 begin - parts = number_with_precision(number, :precision => precision).split('.') - format.gsub(/%n/, number_with_delimiter(parts[0], :delimiter => delimiter) + separator + parts[1].to_s).gsub(/%u/, unit) + format.gsub(/%n/, number_with_precision(number, :precision => precision, :delimiter => delimiter, :separator => separator)).gsub(/%u/, unit) rescue number end @@ -224,7 +223,7 @@ module ActionView # number_to_human_size(1234567, 2) # => 1.18 MB # number_to_human_size(483989, 0) # => 473 KB def number_to_human_size(number, *args) - return pluralize(number.to_i, "Byte") if number.to_i < 1024 + return number.nil? ? nil : pluralize(number.to_i, "Byte") if number.to_i < 1024 options = args.extract_options! options.symbolize_keys! @@ -242,8 +241,7 @@ module ActionView number, unit = number_and_unit_for_human_size(number) - number_with_delimiter( - number_with_precision(number, :precision => precision), + number_with_precision(number, :precision => precision, :separator => separator, :delimiter => '' ).sub(/(\d)(#{Regexp.escape(separator)}[1-9]*)?0+\z/, '\1') + " #{unit}" rescue diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index 99d1c02..d15cefa 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -26,7 +26,8 @@ class NumberHelperTest < ActionView::TestCase 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_equal("$x.", number_to_currency("x")) # fails due to API consolidation + assert_equal("$x", number_to_currency("x")) assert_nil number_to_currency(nil) end @@ -115,8 +116,8 @@ class NumberHelperTest < ActionView::TestCase assert_equal '10 KB', number_to_human_size(10.000.kilobytes, :precision => 4) assert_equal '1 Byte', number_to_human_size(1.1) assert_equal '10 Bytes', number_to_human_size(10) - #assert_nil number_to_human_size('x') - #assert_nil number_to_human_size(nil) + #assert_nil number_to_human_size('x') # fails due to API consolidation + assert_nil number_to_human_size(nil) end def test_number_to_human_size_with_options_hash -- 1.5.2.4 From 9205f7e3e7f6e36c588621b5e29b6cca894fa832 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 22:18:27 +0200 Subject: [PATCH] Added docs for :separator and :delimiter options to number_with_precision. --- .../lib/action_view/helpers/number_helper.rb | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 270e39e..5385cd3 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -167,13 +167,16 @@ module ActionView end # Formats a +number+ with the specified level of :precision (e.g., 112.32 has a precision of 2). - # The default level of precision is 3. + # The default level of precision is 3. You can also specify :separator (defaults to ".") and + # :delimiter (defaults to ""). # # ==== Examples # number_with_precision(111.2345) # => 111.235 # number_with_precision(111.2345, :precision => 2) # => 111.23 # number_with_precision(13, :precision => 5) # => 13.00000 # number_with_precision(389.32314, :precision => 0) # => 389 + # number_with_precision(1111.2345, :precision => 2, :separator => ',', :delimiter => '.') + # # => 1.111,23 # # You can still use number_with_precision with the old API that accepts the # +precision+ as its optional second parameter: -- 1.5.2.4 From ac79542041dcf0027d8cbdd0768cc8bb29f4edbe Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 22:21:42 +0200 Subject: [PATCH] Refactored number_to_percentage. --- .../lib/action_view/helpers/number_helper.rb | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 5385cd3..946446c 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -110,13 +110,7 @@ module ActionView separator = options[:separator] || defaults[:separator] begin - number = number_with_precision(number, :precision => precision) - parts = number.split('.') - if parts.at(1).nil? - parts[0] + "%" - else - parts[0] + separator + parts[1].to_s + "%" - end + number_with_precision(number, :precision => precision, :separator => separator) + "%" rescue number end -- 1.5.2.4 From 03c08057931957e5e29cd3a8f309f67d3fa54a17 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 22:28:47 +0200 Subject: [PATCH] number_to_percentage and number_to_human_size now take :delimiter option. --- .../lib/action_view/helpers/number_helper.rb | 9 ++++++--- actionpack/lib/action_view/locale/en-US.rb | 8 +++++++- .../test/template/number_helper_i18n_test.rb | 3 ++- actionpack/test/template/number_helper_test.rb | 2 ++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 946446c..5c3658d 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -104,13 +104,15 @@ module ActionView def number_to_percentage(number, options = {}) options.symbolize_keys! - defaults = I18n.translate(:'number.format', :locale => options[:locale]) || {} + defaults, percentage = I18n.translate([:'number.format', :'number.percentage.format'], :locale => options[:locale]) || [{},{}] + defaults = defaults.merge(percentage) precision = options[:precision] || defaults[:precision] separator = options[:separator] || defaults[:separator] + delimiter = options[:delimiter] || defaults[:delimiter] begin - number_with_precision(number, :precision => precision, :separator => separator) + "%" + number_with_precision(number, :precision => precision, :separator => separator, :delimiter => delimiter) + "%" rescue number end @@ -235,11 +237,12 @@ module ActionView precision ||= (options[:precision] || defaults[:precision]) separator ||= (options[:separator] || defaults[:separator]) + delimiter ||= (options[:delimiter] || defaults[:delimiter]) number, unit = number_and_unit_for_human_size(number) number_with_precision(number, :precision => precision, - :separator => separator, :delimiter => '' + :separator => separator, :delimiter => delimiter ).sub(/(\d)(#{Regexp.escape(separator)}[1-9]*)?0+\z/, '\1') + " #{unit}" rescue number diff --git a/actionpack/lib/action_view/locale/en-US.rb b/actionpack/lib/action_view/locale/en-US.rb index 1561693..492b585 100644 --- a/actionpack/lib/action_view/locale/en-US.rb +++ b/actionpack/lib/action_view/locale/en-US.rb @@ -29,7 +29,13 @@ I18n.backend.store_translations :'en-US', { }, :human => { :format => { - :precision => 1 + :precision => 1, + :delimiter => '' + } + }, + :percentage => { + :format => { + :delimiter => '' } }, :precision => { diff --git a/actionpack/test/template/number_helper_i18n_test.rb b/actionpack/test/template/number_helper_i18n_test.rb index 941a97d..969d451 100644 --- a/actionpack/test/template/number_helper_i18n_test.rb +++ b/actionpack/test/template/number_helper_i18n_test.rb @@ -9,6 +9,7 @@ class NumberHelperI18nTests < Test::Unit::TestCase @number_defaults = { :precision => 3, :delimiter => ',', :separator => '.' } @currency_defaults = { :unit => '$', :format => '%u%n', :precision => 2 } @human_defaults = { :precision => 1 } + @percentage_defaults = { :delimiter => '' } @precision_defaults = { :delimiter => '' } I18n.backend.store_translations 'en-US', :number => { :format => @number_defaults, @@ -31,7 +32,7 @@ class NumberHelperI18nTests < Test::Unit::TestCase end def test_number_to_percentage_translates_number_formats - I18n.expects(:translate).with(:'number.format', :locale => 'en-US').returns(@number_defaults) + I18n.expects(:translate).with([:'number.format', :'number.percentage.format'], :locale => 'en-US').returns([@number_defaults, @percentage_defaults]) number_to_percentage(1, :locale => 'en-US') end diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index d15cefa..797a5b6 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -36,7 +36,9 @@ class NumberHelperTest < ActionView::TestCase assert_equal("100%", number_to_percentage(100, {:precision => 0})) assert_equal("302.06%", number_to_percentage(302.0574, {:precision => 2})) assert_equal("100.000%", number_to_percentage("100")) + assert_equal("1000.000%", number_to_percentage("1000")) assert_equal("x%", number_to_percentage("x")) + assert_equal("1.000,000%", number_to_percentage(1000, :delimiter => '.', :separator => ',')) assert_nil number_to_percentage(nil) end -- 1.5.2.4 From 010d9b3b1d9eb0b9e4a77eb59a0d22bf8a46e142 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 22:39:32 +0200 Subject: [PATCH] Some doc updates. --- .../lib/action_view/helpers/number_helper.rb | 32 ++++++++++++------- actionpack/test/template/number_helper_test.rb | 7 ++-- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 5c3658d..0cb232e 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -51,10 +51,10 @@ module ActionView # # ==== Options # * :precision - Sets the level of precision (defaults to 2). - # * :unit - Sets the denomination of the currency (defaults to "$"). + # * :unit - Sets the denomination of the currency (defaults to "$"). # * :separator - Sets the separator between the units (defaults to "."). # * :delimiter - Sets the thousands delimiter (defaults to ","). - # * :format - Sets the format of the output string (defaults to "%u%n"). The field types are: + # * :format - Sets the format of the output string (defaults to "%u%n"). The field types are: # # %u The currency unit # %n The number @@ -94,13 +94,13 @@ module ActionView # ==== Options # * :precision - Sets the level of precision (defaults to 3). # * :separator - Sets the separator between the units (defaults to "."). + # * :delimiter - Sets the thousands delimiter (defaults to ""). # # ==== Examples - # number_to_percentage(100) # => 100.000% - # number_to_percentage(100, :precision => 0) # => 100% - # - # number_to_percentage(302.24398923423, :precision => 5) - # # => 302.24399% + # number_to_percentage(100) # => 100.000% + # number_to_percentage(100, :precision => 0) # => 100% + # number_to_percentage(1000, :delimiter => '.', :separator => ',') # => 1.000,000% + # number_to_percentage(302.24398923423, :precision => 5) # => 302.24399% def number_to_percentage(number, options = {}) options.symbolize_keys! @@ -163,8 +163,12 @@ module ActionView end # Formats a +number+ with the specified level of :precision (e.g., 112.32 has a precision of 2). - # The default level of precision is 3. You can also specify :separator (defaults to ".") and - # :delimiter (defaults to ""). + # You can customize the format in the +options+ hash. + # + # ==== Options + # * :precision - Sets the level of precision (defaults to 3). + # * :separator - Sets the separator between the units (defaults to "."). + # * :delimiter - Sets the thousands delimiter (defaults to ""). # # ==== Examples # number_with_precision(111.2345) # => 111.235 @@ -202,9 +206,13 @@ module ActionView # Formats the bytes in +size+ into a more understandable representation # (e.g., giving it 1500 yields 1.5 KB). This method is useful for # reporting file sizes to users. This method returns nil if - # +size+ cannot be converted into a number. You can change the default - # precision of 1 using the precision parameter :precision and - # the default separator (".") by using :separator. + # +size+ cannot be converted into a number. You can customize the + # format in the +options+ hash. + # + # ==== Options + # * :precision - Sets the level of precision (defaults to 1). + # * :separator - Sets the separator between the units (defaults to "."). + # * :delimiter - Sets the thousands delimiter (defaults to ""). # # ==== Examples # number_to_human_size(123) # => 123 Bytes diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index 797a5b6..f22c2b6 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -130,8 +130,9 @@ class NumberHelperTest < ActionView::TestCase assert_equal '10 KB', number_to_human_size(10.000.kilobytes, :precision => 4) end - def test_number_to_human_size_with_custom_separator - assert_equal '1,01 KB', number_to_human_size(1.0123.kilobytes, :precision => 2, :separator => ',') - assert_equal '1,01 KB', number_to_human_size(1.0100.kilobytes, :precision => 4, :separator => ',') + def test_number_to_human_size_with_custom_delimiter_and_separator + assert_equal '1,01 KB', number_to_human_size(1.0123.kilobytes, :precision => 2, :separator => ',') + assert_equal '1,01 KB', number_to_human_size(1.0100.kilobytes, :precision => 4, :separator => ',') + assert_equal '1.000,1 TB', number_to_human_size(1000.1.terabytes, :delimiter => '.', :separator => ',') end end -- 1.5.2.4 From 9de32235abc7ed4db25a7a846ca6532c4c7e428b Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 22:41:41 +0200 Subject: [PATCH] number_to_phone now uses symbolize_keys like all other methods. --- .../lib/action_view/helpers/number_helper.rb | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 0cb232e..e6645b0 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -25,11 +25,11 @@ module ActionView # => +1.123.555.1234 x 1343 def number_to_phone(number, options = {}) number = number.to_s.strip unless number.nil? - options = options.stringify_keys - area_code = options["area_code"] || nil - delimiter = options["delimiter"] || "-" - extension = options["extension"].to_s.strip || nil - country_code = options["country_code"] || nil + options = options.symbolize_keys + area_code = options[:area_code] || nil + delimiter = options[:delimiter] || "-" + extension = options[:extension].to_s.strip || nil + country_code = options[:country_code] || nil begin str = "" -- 1.5.2.4 From 065d5b4ee6b01015eb707bb17c691aec0f3d76e6 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 22:44:27 +0200 Subject: [PATCH] Typo. --- .../lib/action_view/helpers/number_helper.rb | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index e6645b0..1eb48a6 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -262,7 +262,7 @@ module ActionView number = Float(number) exponent = (Math.log(number)/Math.log(1024)).to_i # calculate logarithm for base 1024 - exponent = units.size - 1 if exponent > units.size - 1 # we need this to avoid overflow for the highst unit + exponent = units.size - 1 if exponent > units.size - 1 # we need this to avoid overflow for the highest unit number /= 1024**exponent unit = units[exponent] -- 1.5.2.4 From 512f8f6774d05c141a586551f664ca941d6077f9 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 22:48:55 +0200 Subject: [PATCH] Whitespace. --- .../lib/action_view/helpers/number_helper.rb | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 1eb48a6..f1f0c91 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -30,7 +30,7 @@ module ActionView delimiter = options[:delimiter] || "-" extension = options[:extension].to_s.strip || nil country_code = options[:country_code] || nil - + begin str = "" str << "+#{country_code}#{delimiter}" unless country_code.blank? @@ -73,14 +73,14 @@ module ActionView defaults, currency = I18n.translate([:'number.format', :'number.currency.format'], :locale => options[:locale]) || [{},{}] defaults = defaults.merge(currency) - + precision = options[:precision] || defaults[:precision] unit = options[:unit] || defaults[:unit] separator = options[:separator] || defaults[:separator] delimiter = options[:delimiter] || defaults[:delimiter] format = options[:format] || defaults[:format] separator = '' if precision == 0 - + begin format.gsub(/%n/, number_with_precision(number, :precision => precision, :delimiter => delimiter, :separator => separator)).gsub(/%u/, unit) rescue @@ -136,8 +136,8 @@ module ActionView # You can still use number_with_delimiter with the old API that accepts the # +delimiter+ as its optional second and the +separator+ as its # optional third parameter: - # number_with_delimiter(12345678, " ") # => 12 345.678 - # number_with_delimiter(12345678.05, ".", ",") # => 12.345.678,05 + # number_with_delimiter(12345678, " ") # => 12 345.678 + # number_with_delimiter(12345678.05, ".", ",") # => 12.345.678,05 def number_with_delimiter(number, *args) options = args.extract_options! options.symbolize_keys! @@ -152,7 +152,7 @@ module ActionView end delimiter ||= (options[:delimiter] || defaults[:delimiter]) separator ||= (options[:separator] || defaults[:separator]) - + begin parts = number.to_s.split('.') parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}") @@ -168,7 +168,7 @@ module ActionView # ==== Options # * :precision - Sets the level of precision (defaults to 3). # * :separator - Sets the separator between the units (defaults to "."). - # * :delimiter - Sets the thousands delimiter (defaults to ""). + # * :delimiter - Sets the thousands delimiter (defaults to ""). # # ==== Examples # number_with_precision(111.2345) # => 111.235 @@ -206,7 +206,7 @@ module ActionView # Formats the bytes in +size+ into a more understandable representation # (e.g., giving it 1500 yields 1.5 KB). This method is useful for # reporting file sizes to users. This method returns nil if - # +size+ cannot be converted into a number. You can customize the + # +size+ cannot be converted into a number. You can customize the # format in the +options+ hash. # # ==== Options -- 1.5.2.4 From 12a2c79b5cc9a3e6e30206aa3ff3027c6715a012 Mon Sep 17 00:00:00 2001 From: Clemens Kofler Date: Mon, 28 Jul 2008 23:09:51 +0200 Subject: [PATCH] Removed duplicate block of tests. --- actionpack/test/template/number_helper_test.rb | 11 ----------- 1 files changed, 0 insertions(+), 11 deletions(-) diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index f22c2b6..05c0d90 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -78,17 +78,6 @@ class NumberHelperTest < ActionView::TestCase assert_equal("x", number_with_precision("x")) assert_nil number_with_precision(nil) end - - def test_number_with_precision_with_options_hash - assert_equal '111.235', number_with_precision(111.2346) - assert_equal '31.83', number_with_precision(31.825, :precision => 2) - assert_equal '111.23', number_with_precision(111.2346, :precision => 2) - assert_equal '111.00', number_with_precision(111, :precision => 2) - assert_equal '111.235', number_with_precision("111.2346") - assert_equal '31.83', number_with_precision("31.825", :precision => 2) - assert_equal '112', number_with_precision(111.50, :precision => 0) - assert_equal '1234567892', number_with_precision(1234567891.50, :precision => 0) - end def test_number_with_precision_with_custom_delimiter_and_separator assert_equal '31,83', number_with_precision(31.825, :precision => 2, :separator => ',') -- 1.5.2.4