module BetfairApiNgRails::Api::Data::Concerns::Jsonable::ClassMethods
Public Instance Methods
from_json(data = {})
click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/jsonable.rb, line 13 def from_json(data = {}) return nil unless self.respond_to?(:class_attrs) self.new set_attributes(data) end
Private Instance Methods
get_attr_value(data, name, options)
click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/jsonable.rb, line 30 def get_attr_value(data, name, options) j_data = data[json_key(name)] return nil unless j_data options[:array] ? j_data.map { |r| prepare_value(options[:type], r) } : prepare_value(options[:type], j_data) end
json_key(attrib)
click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/jsonable.rb, line 26 def json_key(attrib) attrib.to_s.camelize(:lower) end
prepare_value(type, data)
click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/jsonable.rb, line 36 def prepare_value(type, data) type == String ? data : type.from_json(data) end
set_attributes(data)
click to toggle source
# File lib/betfair_api_ng_rails/api/data/concerns/jsonable.rb, line 20 def set_attributes(data) self.class_attrs.each_with_object({}) do |(name, options), h| h[name] = get_attr_value(data, name, options) end end