class SportsDataApi::JsonData

Attributes

instance_var_name[R]

Public Class Methods

new(json, override_var_name = nil) click to toggle source
# File lib/sports_data_api/json_data.rb, line 3
def initialize(json, override_var_name = nil)
  ivar = set_data_key(override_var_name)
  json.each_pair do |attr_name, attr_value|
    ivar[attr_name.to_sym] = attr_value
  end
end

Public Instance Methods

[](key) click to toggle source
# File lib/sports_data_api/json_data.rb, line 10
def [](key)
  return send(key) if respond_to?(key)
  self.instance_variable_get("@#{instance_var_name}")[key]
end

Private Instance Methods

class_name() click to toggle source
# File lib/sports_data_api/json_data.rb, line 26
def class_name
  @class_name ||= self
    .class
    .name
    .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
    .gsub(/([a-z\d])([A-Z])/, '\1_\2')
    .split('::')
    .last
    .downcase
end
set_data_key(override_var_name) click to toggle source
# File lib/sports_data_api/json_data.rb, line 19
def set_data_key(override_var_name)
  var_name = override_var_name || class_name
  @instance_var_name = var_name
  self.class.class_eval { attr_reader :"#{var_name}" }
  self.instance_variable_set("@#{instance_var_name}", {})
end