Sha256: feb95a60b5975be6b6377193ca580b5dc01ece9dc175cb48c5fc8b120fc14efd
Contents?: true
Size: 1.28 KB
Versions: 1
Compression:
Stored size: 1.28 KB
Contents
require 'image_optim/path' class ImageOptim # Handles processing of original to result using upto two temp files class Handler # Holds latest successful result attr_reader :result # original must respond to temp_path def initialize(original) unless original.respond_to?(:temp_path) fail ArgumentError, 'original should respond to temp_path' end @original = original @result = nil end # with no associated block, works as new. Otherwise creates instance and # passes it to block, runs cleanup and returns result of handler def self.for(original) handler = new(original) if block_given? begin yield handler handler.result ensure handler.cleanup end else handler end end # Yields two paths, one to latest successful result or original, second to # temp path def process @src ||= @original @dst ||= @original.temp_path return unless yield @src, @dst @result = @dst if @src == @original @src, @dst = @dst, nil else @src, @dst = @dst, @src end end # Remove extra temp files def cleanup return unless @dst @dst.unlink @dst = nil end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
image_optim-0.26.3 | lib/image_optim/handler.rb |