Module: DataAccessible::DataAccessors

Defined in:
lib/data_accessible/data_accessors.rb

Class Method Summary collapse

Class Method Details

.accessor_for_data(data) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/data_accessible/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) ⇒ Object



5
6
7
8
9
# File 'lib/data_accessible/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) ⇒ Object



20
21
22
23
# File 'lib/data_accessible/data_accessors.rb', line 20

def define_accessor(obj, key)
  define_getter(obj, key)
  define_setter(obj, key)
end

.define_getter(obj, key) ⇒ Object



25
26
27
28
29
# File 'lib/data_accessible/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) ⇒ Object



31
32
33
34
35
# File 'lib/data_accessible/data_accessors.rb', line 31

def define_setter(obj, key)
  obj.define_singleton_method("#{key}=") do |value|
    obj.to_h[key] = DataAccessible::DataAccessors.accessor_for_data(value)
  end
end