module ImageOptim::Space

Present size in readable form as fixed length string

Constants

BASE
EMPTY_SPACE
LENGTH
PRECISION
SIZE_SYMBOLS

Public Class Methods

space(size) click to toggle source
# File lib/image_optim/space.rb, line 13
def self.space(size)
  case size
  when 0, nil
    EMPTY_SPACE
  else
    log_denominator = Math.log(size.abs) / Math.log(BASE)
    degree = [log_denominator.floor, SIZE_SYMBOLS.length - 1].min
    number_string = if degree == 0
      size.to_s
    else
      denominator = BASE**degree
      number = size / denominator
      format("%.#{PRECISION}f", number)
    end
    "#{number_string}#{SIZE_SYMBOLS[degree]}".rjust(LENGTH)
  end
end