From d043b9d40f261cbabb9e3a49c23e29abff315d17 Mon Sep 17 00:00:00 2001 From: Xu Cheng Date: Wed, 30 Dec 2015 16:56:05 +0800 Subject: utils: improve disk_usage_readable * Avoid parallel assignment. * Avoid string manipulation. --- Library/Homebrew/utils.rb | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'Library/Homebrew') 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 -- cgit v1.2.3