module PromisePay::Lib::DynamicAccessors
Public Instance Methods
accessor_defined?(attribute)
click to toggle source
# File lib/promise_pay/lib/dynamic_accessors.rb, line 23 def accessor_defined?(attribute) respond_to?(attribute) && respond_to?("#{attribute}=") end
assign_instance_variables(result)
click to toggle source
# File lib/promise_pay/lib/dynamic_accessors.rb, line 4 def assign_instance_variables(result) return if result.empty? result.each do |attribute, value| if value.is_a?(Hash) value.each { |att, val| initialize_property(att, val) } else initialize_property(attribute, value) end end self end
define_accessor(attribute, value, object)
click to toggle source
# File lib/promise_pay/lib/dynamic_accessors.rb, line 32 def define_accessor(attribute, value, object) klass = object.class if attribute.to_s.end_with? "_at" define_date_based_accessors(attribute, value, klass) else define_standard_accessors(attribute, value, klass) end end
initialize_property(attribute, value)
click to toggle source
# File lib/promise_pay/lib/dynamic_accessors.rb, line 17 def initialize_property(attribute, value) attribute = attribute.gsub(/s$/, '_id') if ["buyers","sellers"].include? attribute define_accessor(attribute, value, self) unless accessor_defined?(attribute) set_property(attribute, value) end
set_property(attribute, value)
click to toggle source
# File lib/promise_pay/lib/dynamic_accessors.rb, line 27 def set_property(attribute, value) setter_method = "#{attribute}=" self.send(setter_method, value) end
Private Instance Methods
define_date_based_accessors(attribute, value, klass)
click to toggle source
# File lib/promise_pay/lib/dynamic_accessors.rb, line 43 def define_date_based_accessors(attribute, value, klass) klass.class_eval %Q" def #{attribute}=(value) @#{attribute} = value.nil? ? nil : Time.parse(value).to_i end def #{attribute} @#{attribute}.nil? ? nil : Time.at(@#{attribute}) end " end
define_standard_accessors(attribute, value, klass)
click to toggle source
# File lib/promise_pay/lib/dynamic_accessors.rb, line 55 def define_standard_accessors(attribute, value, klass) klass.class_eval %Q" def #{attribute}=(value) @#{attribute} = value end def #{attribute} @#{attribute} end " end