Sha256: 6e769056d6f8e795b6824ee94f2f4728652609f84d10e5d15fe048745283749a
Contents?: true
Size: 815 Bytes
Versions: 2
Compression:
Stored size: 815 Bytes
Contents
module DataAccessible module DataAccessors module_function def accessor_for_obj(obj) obj.to_h.keys.each do |key| define_accessor(obj, key) end end 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 def define_accessor(obj, key) define_getter(obj, key) define_setter(obj, key) end def define_getter(obj, key) obj.define_singleton_method(key) do obj.to_h.fetch(key) end end def define_setter(obj, key) obj.define_singleton_method("#{key}=") do |value| obj.to_h[key] = DataAccessible::DataAccessors.accessor_for_data(value) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
data_accessible-1.0.2 | lib/data_accessible/data_accessors.rb |
data_accessible-1.0.1 | lib/data_accessible/data_accessors.rb |