module BetfairApiNgRails::Api::Data::Concerns::Attributable::ClassMethods

Attributes

class_attrs[RW]

Public Instance Methods

attributes(attrs) click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/attributable.rb, line 13
def attributes(attrs)
  define_class_attrs attrs
  define_attr_accessors
end

Private Instance Methods

define_attr_accessors() click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/attributable.rb, line 31
def define_attr_accessors
  self.class_attrs.each { |name, options| class_eval("attr_accessor :#{name}") }
end
define_class_attrs(attrs) click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/attributable.rb, line 20
def define_class_attrs(attrs)
  class << self; attr_accessor :class_attrs; end
  self.class_attrs = process_attributes(attrs)
end
fetch_attr_name(attrib) click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/attributable.rb, line 35
def fetch_attr_name(attrib)
  attrib.is_a?(Hash) ? attrib.keys.first : attrib
end
fetch_attr_options(attrib) click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/attributable.rb, line 39
def fetch_attr_options(attrib)
  attrib.is_a?(Hash) ? DEFAULT_OPTIONS.merge(attrib.values.first) : DEFAULT_OPTIONS
end
process_attributes(attrs) click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/attributable.rb, line 25
def process_attributes(attrs)
  attrs.each_with_object({}) do |a, h|
    h[fetch_attr_name(a)] = fetch_attr_options(a)
  end
end