class ApiMaker::ResultParser
Attributes
ability[R]
args[R]
Public Class Methods
new(object, ability: nil, args: nil, controller: nil)
click to toggle source
# File lib/api_maker/result_parser.rb, line 8 def initialize(object, ability: nil, args: nil, controller: nil) @object = object @ability = ability || controller&.__send__(:current_ability) @args = args || controller&.__send__(:api_maker_args) || {} end
parse(*args)
click to toggle source
# File lib/api_maker/result_parser.rb, line 4 def self.parse(*args) ApiMaker::ResultParser.new(*args).result end
Public Instance Methods
result()
click to toggle source
# File lib/api_maker/result_parser.rb, line 14 def result parse_object(@object) end
Private Instance Methods
parse_object(object)
click to toggle source
# File lib/api_maker/result_parser.rb, line 20 def parse_object(object) if object.is_a?(Hash) result = {} object.each do |key, value| result[key] = parse_object(value) end result elsif object.is_a?(Array) object.map { |value| parse_object(value) } elsif object.class.name == "Money" {api_maker_type: :money, amount: object.cents, currency: object.currency.iso_code} elsif object.is_a?(Date) object.iso8601 elsif object.is_a?(Time) object.utc.iso8601 elsif object.is_a?(ApiMaker::CollectionSerializer) || object.is_a?(ApiMaker::Serializer) parse_object(object.as_json) elsif object.is_a?(ActiveRecord::Base) serializer = ApiMaker::Serializer.new(ability: ability, args: args, model: object) { api_maker_type: :model, model_name: serializer.resource.collection_name, serialized: parse_object(serializer.as_json) } else object end end