Sha256: 0332db858cd9ffd581176dfaa316a529f2765ee44ec4599894a7131085cbc38e

Contents?: true

Size: 1.24 KB

Versions: 15

Compression:

Stored size: 1.24 KB

Contents

require 'singleton'

module Paperclip
  class AttachmentRegistry
    include Singleton

    def self.register(klass, attachment_name, attachment_options)
      instance.register(klass, attachment_name, attachment_options)
    end

    def self.clear
      instance.clear
    end

    def self.names_for(klass)
      instance.names_for(klass)
    end

    def self.each_definition(&block)
      instance.each_definition(&block)
    end

    def self.definitions_for(klass)
      instance.definitions_for(klass)
    end

    def initialize
      clear
    end

    def register(klass, attachment_name, attachment_options)
      @attachments ||= {}
      @attachments[klass] ||= {}
      @attachments[klass][attachment_name] = attachment_options
    end

    def clear
      @attachments = Hash.new { |h,k| h[k] = {} }
    end

    def names_for(klass)
      @attachments[klass].keys
    end

    def each_definition
      @attachments.each do |klass, attachments|
        attachments.each do |name, options|
          yield klass, name, options
        end
      end
    end

    def definitions_for(klass)
      klass.ancestors.each_with_object({}) do |ancestor, inherited_definitions|
        inherited_definitions.merge! @attachments[ancestor]
      end
    end
  end
end

Version data entries

15 entries across 13 versions & 2 rubygems

Version Path
solidus_backend-1.0.0.pre3 vendor/bundle/gems/paperclip-4.2.4/lib/paperclip/attachment_registry.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/paperclip-4.2.4/lib/paperclip/attachment_registry.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/paperclip-4.2.3/lib/paperclip/attachment_registry.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/paperclip-4.2.4/lib/paperclip/attachment_registry.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/paperclip-4.2.2/lib/paperclip/attachment_registry.rb
paperclip-4.2.4 lib/paperclip/attachment_registry.rb
paperclip-4.2.3 lib/paperclip/attachment_registry.rb
paperclip-4.2.2 lib/paperclip/attachment_registry.rb
paperclip-4.2.1 lib/paperclip/attachment_registry.rb
paperclip-4.2.0 lib/paperclip/attachment_registry.rb
paperclip-4.1.1 lib/paperclip/attachment_registry.rb
paperclip-4.1.0 lib/paperclip/attachment_registry.rb
paperclip-3.5.4 lib/paperclip/attachment_registry.rb
paperclip-4.0.0 lib/paperclip/attachment_registry.rb
paperclip-3.5.3 lib/paperclip/attachment_registry.rb