Sha256: 7329670271f10d043d76ae88a02d9a9a95a1409e859dbacdfc8ef2dc96a8bebb
Contents?: true
Size: 1.45 KB
Versions: 4
Compression:
Stored size: 1.45 KB
Contents
require 'shellwords' require 'image_optim' class ImageOptim class Worker class << self # List of avaliable workers def klasses @klasses ||= [] end # Remember all classes inheriting from this one def inherited(base) klasses << base end # List of formats which worker can optimize def image_formats format_from_name = name.downcase[/gif|jpeg|png/] format_from_name ? [format_from_name.to_sym] : [] end # Undercored class name def underscored_name @underscored_name ||= name.split('::').last.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase end end include OptionHelpers # Binary name or path attr_reader :bin # Configure (raises on extra options), find binary (raises if not found) def initialize(options = {}) get_option!(options, :bin, default_bin) parse_options(options) raise "`#{bin}` not found" if `which #{bin.to_s.shellescape}`.empty? assert_options_empty!(options) end # Put first in list of workers def run_first? end # Optimize file, return new path or nil if optimization failed def optimize(src, dst) Util.run(bin, *command_args(src, dst)) && dst.size? && dst.size < src.size end # Name of binary determined from class name def default_bin self.class.underscored_name end private def run_priority run_first? ? 0 : 1 end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
image_optim-0.3.2 | lib/image_optim/worker.rb |
image_optim-0.3.1 | lib/image_optim/worker.rb |
image_optim-0.3.0 | lib/image_optim/worker.rb |
image_optim-0.2.1 | lib/image_optim/worker.rb |