module Serializer
Public Instance Methods
serialize(obj, json = true)
click to toggle source
# File lib/serializer.rb, line 6 def serialize(obj, json = true) result = obj.is_a?(Array) ? array(obj) : item(obj) json ? result.to_json : result end
Private Instance Methods
array(obj)
click to toggle source
# File lib/serializer.rb, line 13 def array(obj) obj.each_with_object([]) { |item, result| result << serialize(item, false) } end
hash(obj)
click to toggle source
# File lib/serializer.rb, line 17 def hash(obj) obj.each_with_object({}) { |(k, v), result| result[k] = serialize(v, false) } end
item(obj)
click to toggle source
# File lib/serializer.rb, line 21 def item(obj) { class: obj.class.to_s, value: value(obj) } end
properties(obj)
click to toggle source
# File lib/serializer.rb, line 25 def properties(obj) obj.instance_variables.each_with_object({}) do |var, result| result[var] = serialize(obj.instance_variable_get(var), false) end end
value(obj)
click to toggle source
# File lib/serializer.rb, line 31 def value(obj) return obj.to_s if %w(Float Integer Number String Symbol).include?(obj.class.to_s) return hash(obj) if obj.is_a?(Hash) properties(obj) end