class ActiveRecord::Store::IndifferentCoder

:nodoc:

def self.as_indifferent_hash(obj)

def self.as_indifferent_hash(obj)
  case obj
  when ActiveSupport::HashWithIndifferentAccess
    obj
  when Hash
    obj.with_indifferent_access
  else
    ActiveSupport::HashWithIndifferentAccess.new
  end
end

def as_regular_hash(obj)

def as_regular_hash(obj)
  obj.respond_to?(:to_hash) ? obj.to_hash : {}
end

def dump(obj)

def dump(obj)
  @coder.dump as_regular_hash(obj)
end

def initialize(attr_name, coder_or_class_name)

:nodoc:
def initialize(attr_name, coder_or_class_name)
  @coder =
    if coder_or_class_name.respond_to?(:load) && coder_or_class_name.respond_to?(:dump)
      coder_or_class_name
    else
      ActiveRecord::Coders::YAMLColumn.new(attr_name, coder_or_class_name || Object)
    end
end

def load(yaml)

def load(yaml)
  self.class.as_indifferent_hash(@coder.load(yaml || ""))
end