class Responding::Class
Public Class Methods
new(hash = {})
click to toggle source
# File lib/responding.rb, line 15 def initialize(hash = {}) hash.each do |attr, value| public_send :"#{attr}=", value end end
Private Class Methods
define_attribute(attribute)
click to toggle source
# File lib/responding.rb, line 22 def self.define_attribute(attribute) case attribute when Symbol attr_accessor attribute when Hash attribute.each do |name, nested_attributes| nested_cls = Responding.new(*nested_attributes) define_method :"#{name}" do var_name = :"@#{name}" result = instance_variable_get(var_name) unless result result = nested_cls.new instance_variable_set var_name, result end result end define_method :"#{name}=" do |value| instance_variable_set :"@#{name}", nested_cls.new(value) end end end end