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