Sha256: 0c4a0e1c4fdea3068f3e981431ae787effbadbcf582f65d40ee3743559246894
Contents?: true
Size: 1.05 KB
Versions: 2
Compression:
Stored size: 1.05 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.is_a?(Array) && !object.map { |o| o.respond_to? :serializable_hash }.include?(false) || object.is_a?(Hash) end 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) object.inject({}) do |h, (k, v)| h[k] = serialize(v) h end else object end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
grape-0.13.0 | lib/grape/formatter/serializable_hash.rb |
grape-0.12.0 | lib/grape/formatter/serializable_hash.rb |