Sha256: 01eebf9816afef2b6a03340e1164eb1eac52a5f29a8f33b687bb2e1eef2d6471
Contents?: true
Size: 781 Bytes
Versions: 2
Compression:
Stored size: 781 Bytes
Contents
# frozen_string_literal: true class ImageOptim # Present size in readable form as fixed length string module Space SIZE_SYMBOLS = %w[B K M G T P E].freeze BASE = 1024.0 PRECISION = 1 LENGTH = PRECISION + 4 + 1 EMPTY_SPACE = ' ' * LENGTH 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
image_optim-0.31.4 | lib/image_optim/space.rb |
image_optim-0.31.3 | lib/image_optim/space.rb |