module Sinatra::JSON
def encode(object)
def encode(object) ::MultiJson.dump(object) end
def json(object, options = {})
def json(object, options = {}) content_type resolve_content_type(options) resolve_encoder_action object, resolve_encoder(options) end
def resolve_content_type(options = {})
def resolve_content_type(options = {}) options[:content_type] || settings.json_content_type end
def resolve_encoder(options = {})
def resolve_encoder(options = {}) options[:json_encoder] || settings.json_encoder end
def resolve_encoder_action(object, encoder)
def resolve_encoder_action(object, encoder) %i[encode generate].each do |method| return encoder.send(method, object) if encoder.respond_to? method end raise "#{encoder} does not respond to #generate nor #encode" unless encoder.is_a? Symbol object.__send__(encoder) end