From b0d69b170f8bb7428846c46cf26bd0104d807100 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 26 Mar 2005 12:26:32 +0000 Subject: Added TextHelper#human_size for formatting file sizes, like human_size(1234567) => 1.2 MB #943 [thomas@fesch.at] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@995 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/text_helper.rb | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) (limited to 'actionpack') diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 888126d96d..f4be0319e0 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added TextHelper#human_size for formatting file sizes, like human_size(1234567) => 1.2 MB #943 [thomas@fesch.at] + * Fixed link_to :confirm #936 [Nicholas Seckar] * Improved error reporting especially around never shallowing exceptions. Debugging helpers should be much easier now #980 [Nicholas Seckar] diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb index aa4d3ab8af..043e1dc305 100644 --- a/actionpack/lib/action_view/helpers/text_helper.rb +++ b/actionpack/lib/action_view/helpers/text_helper.rb @@ -128,6 +128,26 @@ module ActionView def strip_links(text) text.gsub(/(.*)<\/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. -- cgit v1.2.3