module HOALife::Resources::HasNestedObject
Wrap an attribute in an object
Public Instance Methods
add_nested_object_methods!(key, class_name)
click to toggle source
rubocop:disable Metrics/MethodLength
Calls superclass method
# File lib/hoalife/resources/has_nested_object.rb, line 23 def add_nested_object_methods!(key, class_name) define_method key do raw_value = super() begin klass = Object.const_get("HOALife::#{class_name}") rescue NameError raise HOALife::UndefinedResourceError, "HOALife::#{class_name} not defined" end if raw_value.is_a?(Array) raw_value.collect { |value| klass.new(value) } elsif raw_value.is_a?(Hash) klass.new(raw_value) else raw_value end end end
has_nested_object(key, class_name)
click to toggle source
rubocop:disable Naming/PredicateName
# File lib/hoalife/resources/has_nested_object.rb, line 11 def has_nested_object(key, class_name) @has_nested_objects ||= {} @has_nested_objects[key] = class_name add_nested_object_methods!(key, class_name) end