From ab5e1f15a67b22410835a84ba11a926f50b31cbe Mon Sep 17 00:00:00 2001 From: Michael Koziarski <michael@koziarski.com> Date: Sun, 5 Aug 2007 01:00:54 +0000 Subject: Fix number_to_human_size when using different precisions. Closes #7536. [RichardStrand, mpalmer] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7275 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/number_helper.rb | 4 ++-- actionpack/test/template/number_helper_test.rb | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 48f46479b6..15293a4b89 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fix number_to_human_size when using different precisions. Closes #7536. [RichardStrand, mpalmer] + * Added partial layouts (see example in action_view/lib/partials.rb) [DHH] * Allow you to set custom :conditions on resource routes. [Rick] diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index e2db853f93..64e424df2f 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -164,13 +164,13 @@ module ActionView def number_to_human_size(size, precision=1) size = Kernel.Float(size) case - when size == 1 : "1 Byte" + 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', '') + end.sub(/([0-9])\.?0+ /, '\1 ' ) rescue nil end diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb index 9cc203bc42..19ca471245 100644 --- a/actionpack/test/template/number_helper_test.rb +++ b/actionpack/test/template/number_helper_test.rb @@ -83,6 +83,10 @@ class NumberHelperTest < Test::Unit::TestCase assert_equal '1.18 MB', number_to_human_size(1234567, 2) assert_equal '3 Bytes', number_to_human_size(3.14159265, 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 Byte', number_to_human_size(1.1) assert_nil number_to_human_size('x') assert_nil number_to_human_size(nil) end -- cgit v1.2.3