module AccessibleData::DataAccessors

Public Instance Methods

accessor_for_data(data) click to toggle source
# File lib/accessible_data/data_accessors.rb, line 11
def accessor_for_data(data)
  HashMethods.each_hash(data) do |hash|
    hash.each do |key, value|
      define_accessor(hash, key)
      accessor_for_data(value)
    end
  end
end
accessor_for_obj(obj) click to toggle source
# File lib/accessible_data/data_accessors.rb, line 5
def accessor_for_obj(obj)
  obj.to_h.keys.each do |key|
    define_accessor(obj, key)
  end
end
define_accessor(obj, key) click to toggle source
# File lib/accessible_data/data_accessors.rb, line 20
def define_accessor(obj, key)
  define_getter(obj, key)
  define_setter(obj, key)
end
define_getter(obj, key) click to toggle source
# File lib/accessible_data/data_accessors.rb, line 25
def define_getter(obj, key)
  obj.define_singleton_method(key) do
    obj.to_h.fetch(key)
  end
end
define_setter(obj, key) click to toggle source
# File lib/accessible_data/data_accessors.rb, line 31
def define_setter(obj, key)
  obj.define_singleton_method("#{key}=") do |value|
    obj.to_h[key] = AccessibleData::DataAccessors.accessor_for_data(value)
  end
end