class BetterHelpers::HashHierarchyToClass
Public Class Methods
new(hash, parent_class)
click to toggle source
# File lib/better_helpers/hash_hierarchy_to_class.rb, line 4 def initialize hash, parent_class @hash = hash @parent_class = parent_class end
Public Instance Methods
apply()
click to toggle source
# File lib/better_helpers/hash_hierarchy_to_class.rb, line 9 def apply value = apply_to_class @hash, @parent_class.new @hash.keys.first.nil? ? value : @parent_class.new end
Private Instance Methods
apply_to_class(obj, parent_obj)
click to toggle source
# File lib/better_helpers/hash_hierarchy_to_class.rb, line 15 def apply_to_class obj, parent_obj if obj.is_a? Hash key = obj.keys.first value = obj[key] return value if key.nil? if parent_obj.respond_to?(key) apply_to_class value, parent_obj.send(key) else klass = Class.new instance = klass.new return_obj = apply_to_class value, instance parent_obj.class.send(:define_method, key) { return_obj } return parent_obj end end obj end