Sha256: ef3c9ef1c0bb1164d430f9b239b99aae0a53035b0ae5a6a00b443cfc3e473c59

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

require 'active_model'
require 'paperclip/processor'
require 'zlib'
require 'tempfile'

module Paperclip
  module Processors
    class Deflater < ::Paperclip::Processor
      VERSION = ::File.read(::File.expand_path('../../../../VERSION', __FILE__)).to_s.strip

      def initialize(file, options = {}, attachment = nil)
        super
        @format          = @options[:format]
        @deflate_options    = @options[:deflate_options] || {}
        @current_format  = File.extname(@file.path)
        @basename        = File.basename(@file.path, @current_format)
      end

      def make
        src = @file

        should_deflate = @attachment.instance_read(:deflate)
        return src if should_deflate == false

        level       = @deflate_options[:level]
        window_bits = @deflate_options[:window_bits]
        memlevel    = @deflate_options[:memlevel]
        strategy    = @deflate_options[:strategy]

        dst = Tempfile.new([@basename, @format ? ".#{@format}" : ''])
        dst.binmode
        zd = Zlib::Deflate.new(level, window_bits, memlevel, strategy)
        dst.write zd.deflate(src.read)
        dst.flush
        dst.rewind
        zd.close

        dst
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
paperclip-deflater-0.0.1 lib/paperclip/processors/deflater.rb