class Gossiperl::Client::Resolution
Constants
- UNDEFINED_VALUE
Public Class Methods
field(name, types, default_value=Resolution::UNDEFINED_VALUE)
click to toggle source
# File lib/gossiperl_client/resolution.rb, line 8 def self.field(name, types, default_value=Resolution::UNDEFINED_VALUE) name = name.to_s define_method("#{name}=") do |value| if value.nil? type_matched = true else type_matched = false types = [types] unless types.is_a? Array types.each do |type| type_matched = true if value.is_a? type and not type_matched end end if type_matched self.instance_variable_set("@#{name}", value) else raise ArgumentError, "Invalid argument value type for #{name}. Required one of #{types.inspect}, received #{value.class}" end end define_method("#{name}") do if default_value != Resolution::UNDEFINED_VALUE self.instance_variable_set("@#{name}", default_value) unless self.instance_variable_defined? "@#{name}" end self.instance_variable_get("@#{name}") end end