Module: ImageCrush::Messages

Defined in:
lib/image_crush/messages.rb

Class Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/image_crush/messages.rb', line 5

def self.extended(base)
  class << base
    def crush_file_with_messages(path)
      size_before = File.open(path){|f| f.stat.size}
      print "#{path}: #{human_size size_before}"
      crush_file_without_messages(path)
      size_after = File.open(path){|f| f.stat.size}
      ratio = sprintf('%0.2f', size_after.to_f*100/size_before)
      puts " -> #{human_size size_after} (#{ratio}%)"
    end
    alias :crush_file_without_messages :crush_file
    alias :crush_file :crush_file_with_messages
    
    
    private
    
    def human_size(bytes)
      if bytes < 1024
        bytes.to_s + 'B'
      else
        sprintf("%0.1fK", bytes.to_f/1024).gsub('.0K', 'K')
      end
    end
  end
end