module Sinatra::JSON

Public Class Methods

encode(object) click to toggle source
# File lib/mihari/web/helpers/json.rb, line 10
def encode(object)
  ::MultiJson.dump(object)
end

Public Instance Methods

json(object, options = {}) click to toggle source
# File lib/mihari/web/helpers/json.rb, line 15
def json(object, options = {})
  object = object.to_camelback_keys

  content_type resolve_content_type(options)
  resolve_encoder_action object, resolve_encoder(options)
end

Private Instance Methods

resolve_content_type(options = {}) click to toggle source
# File lib/mihari/web/helpers/json.rb, line 24
def resolve_content_type(options = {})
  options[:content_type] || settings.json_content_type
end
resolve_encoder(options = {}) click to toggle source
# File lib/mihari/web/helpers/json.rb, line 28
def resolve_encoder(options = {})
  options[:json_encoder] || settings.json_encoder
end
resolve_encoder_action(object, encoder) click to toggle source
# File lib/mihari/web/helpers/json.rb, line 32
def resolve_encoder_action(object, encoder)
  [:encode, :generate].each do |method|
    return encoder.send(method, object) if encoder.respond_to? method
  end

  if encoder.is_a? Symbol
    object.__send__(encoder)
  else
    fail "#{encoder} does not respond to #generate nor #encode"
  end
end