class De::Ser::Ializer
Public Class Methods
parse(data, model_class)
click to toggle source
# File lib/de/ser/ializer.rb, line 7 def parse(data, model_class) return parse_many(data, model_class) if data.is_a? Array parse_one(data, model_class) end
parse_attribute(object, key, value)
click to toggle source
# File lib/de/ser/ializer.rb, line 37 def parse_attribute(object, key, value) field = _attributes[key] return unless field return unless object.respond_to?(field.setter) parse_field(object, field, value) end
parse_json(json, model_class)
click to toggle source
# File lib/de/ser/ializer.rb, line 32 def parse_json(json, model_class) data = MultiJson.load(json) parse(data, model_class) end
parse_many(data, model_class)
click to toggle source
# File lib/de/ser/ializer.rb, line 13 def parse_many(data, model_class) data.map { |obj_data| parse_one(obj_data, model_class) } end
parse_object(data, object)
click to toggle source
# File lib/de/ser/ializer.rb, line 24 def parse_object(data, object) data.each do |key, value| parse_attribute(object, key, value) end object end
parse_one(data, model_class)
click to toggle source
# File lib/de/ser/ializer.rb, line 17 def parse_one(data, model_class) # OpenStruct lazily defines methods so respond_to? fails initially return parse_ostruct(data) if ostruct?(model_class) parse_object(data, model_class.new) end
Protected Class Methods
create_anon_class()
click to toggle source
# File lib/de/ser/ializer.rb, line 49 def create_anon_class Class.new(De::Ser::Ializer) end
Private Class Methods
ostruct?(model_class)
click to toggle source
# File lib/de/ser/ializer.rb, line 65 def ostruct?(model_class) defined?(OpenStruct) && model_class <= OpenStruct end
parse_field(object, field, value)
click to toggle source
# File lib/de/ser/ializer.rb, line 55 def parse_field(object, field, value) return if value.nil? parsed_value = field.parse(value) return if parsed_value.nil? object.public_send(field.setter, parsed_value) end
parse_ostruct(data)
click to toggle source
# File lib/de/ser/ializer.rb, line 69 def parse_ostruct(data) object = OpenStruct.new data.each do |key, value| parse_ostruct_field(object, key, value) end object end
parse_ostruct_field(object, key, value)
click to toggle source
# File lib/de/ser/ializer.rb, line 79 def parse_ostruct_field(object, key, value) field = _attributes[key] return unless field parse_field(object, field, value) end