Sha256: 129e0b80e749401fb81c4ca72228e4364764e60b7103f2141004a6dc0bef3c03
Contents?: true
Size: 1.08 KB
Versions: 11
Compression:
Stored size: 1.08 KB
Contents
module Grape module Formatter module SerializableHash class << self def call(object, env) return object if object.is_a?(String) return MultiJson.dump(serialize(object)) if serializable?(object) return object.to_json if object.respond_to?(:to_json) MultiJson.dump(object) end private def serializable?(object) object.respond_to?(:serializable_hash) || object.kind_of?(Array) && !object.map {|o| o.respond_to? :serializable_hash }.include?(false) || object.kind_of?(Hash) end def serialize(object) if object.respond_to? :serializable_hash object.serializable_hash elsif object.kind_of?(Array) && !object.map {|o| o.respond_to? :serializable_hash }.include?(false) object.map {|o| o.serializable_hash } elsif object.kind_of?(Hash) object.inject({}) { |h,(k,v)| h[k] = serialize(v); h } else object end end end end end end
Version data entries
11 entries across 11 versions & 1 rubygems