Module: DataAccessible::DataAccessors
- Defined in:
- lib/data_accessible/data_accessors.rb
Class Method Summary collapse
- .accessor_for_data(data) ⇒ Object
- .accessor_for_obj(obj) ⇒ Object
- .define_accessor(obj, key) ⇒ Object
- .define_getter(obj, key) ⇒ Object
- .define_setter(obj, key) ⇒ Object
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 |