Sha256: 13794862595de1ac61c9846add38081f6f59f4518bfad2664500c49d24c113ad

Contents?: true

Size: 750 Bytes

Versions: 15

Compression:

Stored size: 750 Bytes

Contents

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 = 4 + PRECISION + 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

15 entries across 15 versions & 2 rubygems

Version Path
image_optim-0.23.0 lib/image_optim/space.rb
image_optim-0.22.1 lib/image_optim/space.rb
image_optim-0.22.0 lib/image_optim/space.rb
openstreetmap-image_optim-0.21.0.1 lib/image_optim/space.rb
image_optim-0.21.0 lib/image_optim/space.rb
image_optim-0.20.2 lib/image_optim/space.rb
image_optim-0.20.1 lib/image_optim/space.rb
image_optim-0.20.0 lib/image_optim/space.rb
image_optim-0.19.1 lib/image_optim/space.rb
image_optim-0.19.0 lib/image_optim/space.rb
image_optim-0.18.0 lib/image_optim/space.rb
image_optim-0.17.1 lib/image_optim/space.rb
image_optim-0.17.0 lib/image_optim/space.rb
image_optim-0.16.0 lib/image_optim/space.rb
image_optim-0.15.0 lib/image_optim/space.rb