module Middleman::Imageoptim::Utils

Public Class Methods

file_size_stats(source, destination) click to toggle source
# File lib/middleman-imageoptim/utils.rb, line 32
def self.file_size_stats(source, destination)
  {
    source: source,
    percent_change: percentage_change(source.size, destination.size),
    size_change: format_size((source.size - destination.size)),
    size_change_type: size_change_word(source.size, destination.size)
  }
end
format_size(bytes) click to toggle source
# File lib/middleman-imageoptim/utils.rb, line 19
def self.format_size(bytes)
  units = %w(B KiB MiB GiB TiB)
  if bytes.to_i < 1024
    exponent = 0
  else
    max_exp  = units.size - 1
    exponent = (Math.log(bytes) / Math.log(1024)).to_i
    exponent = max_exp if exponent > max_exp
    bytes /= 1024**exponent
  end
  "#{bytes}#{units[exponent]}"
end
percentage_change(size_a, size_b) click to toggle source
# File lib/middleman-imageoptim/utils.rb, line 15
def self.percentage_change(size_a, size_b)
  '%.2f%%' % [100 - 100.0 * size_b / size_a]
end
size_change_word(size_a, size_b) click to toggle source
# File lib/middleman-imageoptim/utils.rb, line 4
def self.size_change_word(size_a, size_b)
  size_difference = (size_a - size_b)
  if size_difference > 0
    'smaller'
  elsif size_difference < 0
    'larger'
  else
    'no change'
  end
end