aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-03-26 12:26:32 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-03-26 12:26:32 +0000
commitb0d69b170f8bb7428846c46cf26bd0104d807100 (patch)
treea1715f3843163b0e3968574029c8b1ebfe11fbb7
parent4b3bb3d2b2c624d3c151f5bd98e6f74ebb61b948 (diff)
downloadrails-b0d69b170f8bb7428846c46cf26bd0104d807100.tar.gz
rails-b0d69b170f8bb7428846c46cf26bd0104d807100.tar.bz2
rails-b0d69b170f8bb7428846c46cf26bd0104d807100.zip
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
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_view/helpers/text_helper.rb20
2 files changed, 22 insertions, 0 deletions
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.*>(.*)<\/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.