Sha256: a783731b2505088e685d4b1117eac73783eda122ae47f3833ea29b11d4ad4637

Contents?: true

Size: 1.36 KB

Versions: 1

Compression:

Stored size: 1.36 KB

Contents

module Attachs
  module Types
    class Image < File

      def presets
        default_presets | parse_array_setting(options[:presets])
      end
      
      def store
        super { presets.each { |name| generate_preset name } if presets.any? }
      end

      def delete
        super { presets.each { |name| delete_preset name } if presets.any? }
      end

      def generate_preset(name)
        if settings = Rails.application.config.attachs.presets[name]
          storage.magick destination_path, destination_path(name), upload do |image|
            if settings.respond_to? :call
              settings.call image
            else
              image.send "resize_to_#{settings[:method] || 'fill'}", settings[:width], settings[:height]
            end
          end
        end
      end

      def delete_preset(name)
        storage.delete path(name) if exists?(name)
      end

      protected

      def parse_array_setting(value)
        case value
        when Symbol
          [value]
        when String
          [value.to_sym]
        when Array
          value
        else
          []
        end
      end

      def default_presets
        parse_array_setting Rails.application.config.attachs.default_presets
      end

      def store_path(*args)
        ::File.join 'images', (args[0] ? args[0].to_s.gsub('_', '-') : 'original')
      end
      
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
attachs-0.3.5 lib/attachs/types/image.rb