Sha256: 8b91dfa268f9ba22267e4fadf1c86445d87276a58a32d8398fe4b75ff58ac31e

Contents?: true

Size: 704 Bytes

Versions: 8

Compression:

Stored size: 704 Bytes

Contents

require "document/attribute_initializer/base"
require "document/attribute_initializer/active_model"
require "document/attribute_initializer/enum"

module Document
  module AttributeInitializer

    def self.determine_initializer(klass, name, type, options)
      initializer_class = build_class(type)
      initializer_class.new(klass, name, type, options)
    end

    def self.build_class(type)
      case
      when type == Document::Enum
        AttributeInitializer::Enum
      when type && type.included_modules.include?(::ActiveModel::Model)
        AttributeInitializer::ActiveModel
      else
        AttributeInitializer::Base
      end
    end

    private_class_method :build_class
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
renalware-core-2.0.0.pre.beta11 lib/document/attribute_initializer.rb
renalware-core-2.0.0.pre.beta10 lib/document/attribute_initializer.rb
renalware-core-2.0.0.pre.beta9 lib/document/attribute_initializer.rb
renalware-core-2.0.0.pre.beta8 lib/document/attribute_initializer.rb
renalware-core-2.0.0.pre.beta7 lib/document/attribute_initializer.rb
renalware-core-2.0.0.pre.beta6 lib/document/attribute_initializer.rb
renalware-core-2.0.0.pre.beta5 lib/document/attribute_initializer.rb
renalware-core-2.0.0.pre.beta4 lib/document/attribute_initializer.rb