module FavroApi::Parser
Public Instance Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/favro_api/parser.rb, line 5 def new(*args) if args.any? return parse(*args) end super end
parse(data)
click to toggle source
# File lib/favro_api/parser.rb, line 12 def parse(data) case data when Array parse_array(data) when Hash parse_hash(data) else raise ParserError, "Can't parse #{data.class.name}" end end
Private Instance Methods
parse_array(array)
click to toggle source
# File lib/favro_api/parser.rb, line 34 def parse_array(array) array.map do |data| parse(data) end end
parse_field(field, value = nil)
click to toggle source
# File lib/favro_api/parser.rb, line 40 def parse_field(field, value = nil) if field[:type].is_a?(Array) && array_field = field[:type][0] return value.to_a.map {|val| array_field.new(val) } end field[:type].new(value) end
parse_hash(hash)
click to toggle source
# File lib/favro_api/parser.rb, line 25 def parse_hash(hash) instance = new fields.each do |field| value = hash[field[:name].to_s] instance.send("#{field[:name]}=", parse_field(field, value)) end instance end