module Grape::Formatter::GarActiveModelSerializers
Public Class Methods
call(resource, env)
click to toggle source
# File lib/grape_ape_rails/handlers/formatters.rb, line 35 def self.call(resource, env) if serializer = Grape::Formatter::ActiveModelSerializers.fetch_serializer(resource, env) serializer.root = false %Q[{\"result\":{\"#{pluralized_resource(serializer, env)}\":#{dump_to_json_array_string(serializer)}}}] else Grape::Formatter::GarJsonSerializer.call resource, env end end
Private Class Methods
dump_to_json_array_string(serializer)
click to toggle source
# File lib/grape_ape_rails/handlers/formatters.rb, line 46 def self.dump_to_json_array_string(serializer) str = serializer.object.try(:empty?) ? nil : MultiJson.dump(serializer) str = "[#{str}]" unless is_serialized_array_string?(str) str end
is_serialized_array_string?(str)
click to toggle source
# File lib/grape_ape_rails/handlers/formatters.rb, line 52 def self.is_serialized_array_string?(str) str.present? && str[0,1] == '[' && str[-1,1] == ']' end
pluralized_resource(serializer, env)
click to toggle source
# File lib/grape_ape_rails/handlers/formatters.rb, line 56 def self.pluralized_resource(serializer, env) single = serializer.try(:resource_singular) || serializer.instance_variable_get(:@resource_name).try(:singularize) || serializer.instance_variable_get(:@object).class.name.underscore plural = serializer.try(:resource_plural) || serializer.instance_variable_get(:@resource_name) || single.pluralize # allow the pluralized resource name to be overriden with a custom route setting if env["rack.routing_args"][:route_info].route_settings[:custom] && env["rack.routing_args"][:route_info].route_settings[:custom][:resource_plural] plural = env["rack.routing_args"][:route_info].route_settings[:custom][:resource_plural].to_s.downcase end plural end