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.
42 43 44 |
# File 'lib/optipng.rb', line 42 def self.available? return Whereis.available? self::COMMAND 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.
60 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 |
# File 'lib/optipng.rb', line 60 def self.optimize(paths, = { }, &block) # 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] == true 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 |