class ActiveModel::Serializer::Associations::Config

:nodoc:
:nodoc:

def self.refine(name, class_options)

def self.refine(name, class_options)
  current_class = self
  Class.new(self) do
    singleton_class.class_eval do
      define_method(:to_s) do
        "(subclass of #{current_class.name})"
      end
      alias inspect to_s
    end
    self.options = class_options
  end
end

def associated_object

def associated_object
  option(:value) || source_serializer.send(name)
end

def embed_ids?

def embed_ids?
  option(:embed, source_serializer._embed) == :ids
end

def embed_in_root?

def embed_in_root?
  option(:include, source_serializer._root_embed)
end

def embed_objects?

def embed_objects?
  option(:embed, source_serializer._embed) == :objects
end

def embeddable?

def embeddable?
  !associated_object.nil?
end

def find_serializable(object)

def find_serializable(object)
  if target_serializer
    target_serializer.new(object, source_serializer.options)
  elsif object.respond_to?(:active_model_serializer) && (ams = object.active_model_serializer)
    ams.new(object, source_serializer.options)
  else
    object
  end
end

def initialize(name, source, options={})

def initialize(name, source, options={})
  @name = name
  @source = source
  @options = options
end

def key

def key
  option(:key) || @name
end

def name

def name
  option(:name) || @name
end

def option(key, default=nil)

def option(key, default=nil)
  if @options.key?(key)
    @options[key]
  elsif self.class.options.key?(key)
    self.class.options[key]
  else
    default
  end
end

def root

def root
  option(:root) || @name
end

def source_serializer

def source_serializer
  @source
end

def target_serializer

def target_serializer
  serializer = option(:serializer)
  serializer.is_a?(String) ? serializer.constantize : serializer
end