aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXu Cheng2015-12-30 16:56:05 +0800
committerXu Cheng2015-12-30 16:56:05 +0800
commitd043b9d40f261cbabb9e3a49c23e29abff315d17 (patch)
tree357c4e4ed9e5372d76c7c655f84c789bf0fffcf6
parent24224dc8968e00fb48f2721ab480492da0668fd2 (diff)
downloadbrew-d043b9d40f261cbabb9e3a49c23e29abff315d17.tar.bz2
utils: improve disk_usage_readable
* Avoid parallel assignment. * Avoid string manipulation.
-rw-r--r--Library/Homebrew/utils.rb30
1 files changed, 15 insertions, 15 deletions
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb
index cd47d4a28..50e226faa 100644
--- a/Library/Homebrew/utils.rb
+++ b/Library/Homebrew/utils.rb
@@ -594,25 +594,25 @@ module GitHub
end
def disk_usage_readable(size_in_bytes)
- len = size_in_bytes.to_s.length
- case
- when len > 9
- sym, unit = ["G", 1_073_741_824]
- when len > 6
- sym, unit = ["M", 1_048_576]
- when len > 3
- sym, unit = ["K", 1_024]
+ if size_in_bytes >= 1_073_741_824
+ size = size_in_bytes.to_f / 1_073_741_824
+ unit = "G"
+ elsif size_in_bytes >= 1_048_576
+ size = size_in_bytes.to_f / 1_048_576
+ unit = "M"
+ elsif size_in_bytes >= 1_024
+ size = size_in_bytes.to_f / 1_024
+ unit = "K"
else
- sym, unit = ["B", 1]
+ size = size_in_bytes
+ unit = "B"
end
- num = "%.1f" % [size_in_bytes.to_f / unit]
- # check whether the rounded value has a zero after decimal point,
- # if true, then display just the integer value.
- if num.split(".").last.to_i == 0
- "%d#{sym}" % num.to_i
+ # avoid trailing zero after decimal point
+ if (size * 10).to_i % 10 == 0
+ "#{size.to_i}#{unit}"
else
- "#{num}#{sym}"
+ "#{"%.1f" % size}#{unit}"
end
end