module Grape::Formatter::SerializableHash
Public Class Methods
call(object, _env)
click to toggle source
# File lib/grape/formatter/serializable_hash.rb, line 5 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 Class Methods
serializable?(object)
click to toggle source
# File lib/grape/formatter/serializable_hash.rb, line 14 def serializable?(object) object.respond_to?(:serializable_hash) || object.is_a?(Array) && !object.map { |o| o.respond_to? :serializable_hash }.include?(false) || object.is_a?(Hash) end
serialize(object)
click to toggle source
# File lib/grape/formatter/serializable_hash.rb, line 18 def serialize(object) if object.respond_to? :serializable_hash object.serializable_hash elsif object.is_a?(Array) && !object.map { |o| o.respond_to? :serializable_hash }.include?(false) object.map(&:serializable_hash) elsif object.is_a?(Hash) h = {} object.each_pair do |k, v| h[k] = serialize(v) end h else object end end