Module: Optipng
- Defined in:
- lib/optipng.rb
Overview
The optipng
tool command frontend.
Defined Under Namespace
Classes: Result
Constant Summary collapse
- COMMAND =
Holds
optipng
command. :optipng
- MATCHERS =
Holds output matchers.
[ /^Processing\:\s*(.*)/, /^Error:\s*(.*)/, /(\d+\.\d+)%/, /already optimized\.$/, ]
Class Method Summary collapse
-
.available? ⇒ Boolean
Checks if
jpegoptim
is available. -
.optimize(paths, options = {}, &block) ⇒ Struct
Performs optimizations above file or set of files.
Class Method Details
.available? ⇒ Boolean
Checks if jpegoptim
is available.
43 44 45 |
# File 'lib/optipng.rb', line 43 def self.available? find_executable(self::COMMAND.to_s).nil? ? false : true end |
.optimize(paths, options = {}, &block) ⇒ Struct
Performs optimizations above file or set of files.
If block is given, runs optipng
asynchronously. In that case, em-pipe-run
file must be already required.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/optipng.rb', line 61 def self.optimize(paths, = {}, &block) # Check if optipng available if [:is_available] && !self.available? throw Exception.new('Optipng is not installed') end # Command cmd = CommandBuilder::new(self::COMMAND) # Max if [:level].kind_of? Integer cmd.arg(:o, [:level].to_i) end # Files if paths.kind_of? String paths = [paths] end # Runs the command cmd << paths if [:debug] STDERR.write "#{cmd.to_s}\n" end # Blocking if block.nil? output = cmd.execute! # Parses output succeed, errors = __parse_output(output) return self::Result::new(succeed, errors) # Non-blocking else cmd.execute do |output| succeed, errors = __parse_output(output) block.call(self::Result::new(succeed, errors)) end end end |