lib/si.rb in si-0.1.1 vs lib/si.rb in si-0.1.2

- old
+ new

@@ -1,55 +1,5 @@ # encoding: utf-8 -require "si/version" - -module SI - PREFIXES = Hash[ -8.upto(8).zip(%[yzafpnμm kMGTPEZY].chars.map(&:strip)) ] - DEFAULT = { - :length => 3, - :base => 1000, - :min_exp => -8, - :max_exp => 8, - } - - def si options = {} - options = { :length => options } if options.is_a?(Fixnum) && options >= 3 - options = DEFAULT.merge(options) - length, - min_exp, - max_exp = options.values_at(:length, :min_exp, :max_exp) - base = options[:base].to_f - minus = self < 0 ? '-' : '' - selfp = self.abs - - PREFIXES.keys.sort.reverse.select { |exp| (min_exp..max_exp).include? exp }.each do |exp| - denom = base ** exp - if selfp >= denom || exp == min_exp - val = selfp / denom - val = val.round [length - val.to_i.to_s.length, 0].max - val = val.to_i if exp == 0 && self.is_a?(Fixnum) - val = val.to_s.ljust(length + 1, '0') if val.is_a?(Float) - - return "#{minus}#{val}#{PREFIXES[exp]}" - end - end - - nil - end - - def si_byte length = 3 - self.si(:length => length, :base => 1024, :min_exp => 0) + 'B' - end -end - -class Float - include SI -end - -class Fixnum - include SI -end - -class Bignum - include SI -end +require 'si/minimal' +require 'si/patch'