Module: ImageOptimizer

Defined in:
lib/image-optimizer.rb,
lib/image-optimizer/png.rb,
lib/image-optimizer/jpeg.rb

Defined Under Namespace

Modules: Jpeg, Png

Constant Summary collapse

BEFORE =

Indicates, callback is called before the optimization.

Since:

  • 0.2

:before
AFTER =

Indicates, callback is called before the optimization.

Since:

  • 0.2

:after
METHOD =

Indicates, callback returns the method.

Since:

  • 0.2

:method

Class Method Summary collapse

Class Method Details

.available?(command) ⇒ Boolean

Indicates, optimizer is available.

Parameters:

  • command (Symbol, String)

    command name

Returns:

  • (Boolean)

Since:

  • 0.2



117
118
119
120
121
122
123
124
125
126
# File 'lib/image-optimizer.rb', line 117

def self.available?(command)
    @optimizers = { } if @optimizers.nil?
    
    if command.in? @optimizers
        return @optimizers[command]
    else
        available = (not Which.which(command.to_s).empty?)
        return @optimizers[command] = available 
    end
end

.optimize(item, &block) ⇒ Object

Optimizes given file or folder.

If array given, go recursively deep to it. Yields paths to optimized files.

Parameters:

  • item (String, Array)

    path or paths to files or directories

  • block (Proc)

    block for giving back the results



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/image-optimizer.rb', line 56

def self.optimize(item, &block)
    if item.kind_of? Array
        item.each do |i|
            self::optimize(i, &block)
        end
    else
        if File.file? item
            self::optimize_file(item, &block)
        elsif File.directory? item
            self::optimize_directory(item, &block)
        end
    end
end

.optimize_directory(item, &block) ⇒ Object

Optimizes given folder. Yields paths to optimized files.

Parameters:

  • item (String)

    path to directory

  • block (Proc)

    block for giving back the results



78
79
80
81
82
83
84
85
86
# File 'lib/image-optimizer.rb', line 78

def self.optimize_directory(item, &block)
    Dir.open(item) do |dir|
        dir.each do |i|
            if i[0].chr != ?.
                self::optimize(item + "/" + i, &block)
            end
        end
    end
end

.optimize_file(path, &block) ⇒ Object

Optimizes given file. Yields paths to optimized files.

Parameters:

  • item (String)

    path to file

  • block (Proc)

    block for giving back the results



96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/image-optimizer.rb', line 96

def self.optimize_file(path, &block)
    ext = File.extname(path)
    
    case ext
        when ".png"
            ImageOptimizer::Png::optimize(path, &block)
              
        when ".jpg"
            ImageOptimizer::Jpeg::optimize(path, &block)
            
    end
end