diff options
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/number_helper.rb | 22 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/text_helper.rb | 20 | ||||
-rw-r--r-- | actionpack/test/template/number_helper_test.rb | 23 | ||||
-rw-r--r-- | actionpack/test/template/text_helper_test.rb | 16 |
5 files changed, 47 insertions, 36 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index cbf293e26b..3629d09b02 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Moved TextHelper#human_size to NumberHelper#number_to_human_size, but kept an deprecated alias to the old method name + * Fixed that the content-type for some browsers could include an additional \r which made wonky things happen #1067 [Thomas Fuchs] * Fixed that radio buttons shouldn't have a default size attribute #1074 [hendrik@mans.de] diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 05103e09ff..2f753558b2 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -77,6 +77,28 @@ module ActionView number.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}") end + # Returns a formatted-for-humans file size. + # + # Examples: + # human_size(123) => 123 Bytes + # human_size(1234) => 1.2 KB + # human_size(12345) => 12.1 KB + # human_size(1234567) => 1.2 MB + # human_size(1234567890) => 1.1 GB + def number_to_human_size(size) + begin + return "%d Bytes" % size if size < 1.kilobytes + return "%.1f KB" % (size/1.0.kilobytes) if size < 1.megabytes + return "%.1f MB" % (size/1.0.megabytes) if size < 1.gigabytes + return "%.1f GB" % (size/1.0.gigabytes) if size < 1.terabytes + return "%.1f TB" % (size/1.0.terabytes) + rescue + # just return nothing + end + end + + alias_method :human_size, :number_to_human_size # deprecated alias + # Formats a +number+ with a level of +precision+. # Example: # number_with_precision(111.2345) => 111.235 diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb index 5fcb8a250f..6b89bec9f2 100644 --- a/actionpack/lib/action_view/helpers/text_helper.rb +++ b/actionpack/lib/action_view/helpers/text_helper.rb @@ -129,26 +129,6 @@ module ActionView text.gsub(/<a.*>(.*)<\/a>/m, '\1') end - # Returns a formatted-for-humans file size. - # - # Examples: - # human_size(123) => 123 Bytes - # human_size(1234) => 1.2 KB - # human_size(12345) => 12.1 KB - # human_size(1234567) => 1.2 MB - # human_size(1234567890) => 1.1 GB - def human_size(size) - begin - return "%d Bytes" % size if size < 1.kilobytes - return "%.1f KB" % (size/1.0.kilobytes) if size < 1.megabytes - return "%.1f MB" % (size/1.0.megabytes) if size < 1.gigabytes - return "%.1f GB" % (size/1.0.gigabytes) if size < 1.terabytes - return "%.1f TB" % (size/1.0.terabytes) - rescue - # just return nothing - end - end - private # Returns a version of the text that's safe to use in a regular expression without triggering engine features. def escape_regexp(text) diff --git a/actionpack/test/template/number_helper_test.rb b/actionpack/test/template/number_helper_test.rb new file mode 100644 index 0000000000..a8a3158e80 --- /dev/null +++ b/actionpack/test/template/number_helper_test.rb @@ -0,0 +1,23 @@ +require 'test/unit' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/number_helper' +require File.dirname(__FILE__) + '/../../../activesupport/lib/active_support/core_ext/numeric' # for human_size + +class NumberHelperTest < Test::Unit::TestCase + include ActionView::Helpers::NumberHelper + + def test_number_to_human_size + assert_equal("0 Bytes", number_to_human_size(0)) + assert_equal("3 Bytes", number_to_human_size(3.14159265)) + assert_equal("123 Bytes", number_to_human_size(123.0)) + assert_equal("123 Bytes", number_to_human_size(123)) + assert_equal("1.2 KB", number_to_human_size(1234)) + assert_equal("12.1 KB", number_to_human_size(12345)) + 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("444.0 KB", number_to_human_size(444.kilobytes)) + assert_equal("1023.0 MB", number_to_human_size(1023.megabytes)) + assert_equal("3.0 TB", number_to_human_size(3.terabytes)) + assert_nil number_to_human_size('x') + end +end diff --git a/actionpack/test/template/text_helper_test.rb b/actionpack/test/template/text_helper_test.rb index fe170d6720..ed2f08e755 100644 --- a/actionpack/test/template/text_helper_test.rb +++ b/actionpack/test/template/text_helper_test.rb @@ -53,22 +53,6 @@ class TextHelperTest < Test::Unit::TestCase highlight("This is a beautiful? morning", "beautiful? morning") ) end - - def test_human_size - assert_equal("0 Bytes", human_size(0)) - assert_equal("3 Bytes", human_size(3.14159265)) - assert_equal("123 Bytes", human_size(123.0)) - assert_equal("123 Bytes", human_size(123)) - assert_equal("1.2 KB", human_size(1234)) - assert_equal("12.1 KB", human_size(12345)) - assert_equal("1.2 MB", human_size(1234567)) - assert_equal("1.1 GB", human_size(1234567890)) - assert_equal("1.1 TB", human_size(1234567890123)) - assert_equal("444.0 KB", human_size(444.kilobytes)) - assert_equal("1023.0 MB", human_size(1023.megabytes)) - assert_equal("3.0 TB", human_size(3.terabytes)) - assert_nil human_size('x') - end def test_excerpt assert_equal("...is a beautiful morni...", excerpt("This is a beautiful morning", "beautiful", 5)) |