module NiceBytes

Constants

G
K
M
T

Public Class Methods

nice_bytes( bytes, max_digits=3 ) click to toggle source
# File lib/ruic/nicebytes.rb, line 6
def nice_bytes( bytes, max_digits=3 )
        value, suffix, precision = case bytes
                when 0...K
                        [ bytes, 'B', 0 ]
                else
                        value, suffix = case bytes
                                when K...M then [ bytes / K, 'kB' ]
                                when M...G then [ bytes / M, 'MB' ]
                                when G...T then [ bytes / G, 'GB' ]
                                else            [ bytes / T, 'TB' ]
                        end
                        used_digits = case value
                                when   0...10   then 1
                                when  10...100  then 2
                                when 100...1000 then 3
                                else 4
                        end
                        leftover_digits = max_digits - used_digits
                        [ value, suffix, leftover_digits > 0 ? leftover_digits : 0 ]
        end
        "%.#{precision}f#{suffix}" % value
end

Private Instance Methods

nice_bytes( bytes, max_digits=3 ) click to toggle source
# File lib/ruic/nicebytes.rb, line 6
def nice_bytes( bytes, max_digits=3 )
        value, suffix, precision = case bytes
                when 0...K
                        [ bytes, 'B', 0 ]
                else
                        value, suffix = case bytes
                                when K...M then [ bytes / K, 'kB' ]
                                when M...G then [ bytes / M, 'MB' ]
                                when G...T then [ bytes / G, 'GB' ]
                                else            [ bytes / T, 'TB' ]
                        end
                        used_digits = case value
                                when   0...10   then 1
                                when  10...100  then 2
                                when 100...1000 then 3
                                else 4
                        end
                        leftover_digits = max_digits - used_digits
                        [ value, suffix, leftover_digits > 0 ? leftover_digits : 0 ]
        end
        "%.#{precision}f#{suffix}" % value
end