class Mmtrix::JSONWrapper

Public Class Methods

backend_name() click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 51
def self.backend_name
  @backend_name
end
dump(object, options={}) click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 59
def self.dump(object, options={})
  object = normalize(object) if options[:normalize]
  # okjson doesn't handle symbol keys, so we must stringify them before encoding
  object = Agent::HashExtensions.stringify_keys_in_object(object) if backend_name == :okjson
  @dump_method.call(object)
end
load(string) click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 66
def self.load(string)
  @load_method.call(string)
end
load_native_json() click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 10
def self.load_native_json
  begin
    require 'json' unless defined?(::JSON)

    # yajl's replacement methods on ::JSON override both dump and generate.
    # Because stdlib dump just calls generate, we end up calling into yajl
    # when we don't want to. As such, we use generate directly instead of
    # dump, although we have to fuss with defaults to make that ok.
    generate_method = ::JSON.method(:generate)
    if ::JSON.respond_to?(:dump_default_options)
      options = ::JSON.dump_default_options
    else
      # These were the defaults from json 1.1.9 up to 1.6.1
      options = { :allow_nan => true, :max_nesting => false }
    end
    @dump_method = Proc.new do |obj|
      generate_method.call(obj, options)
    end

    @load_method    = ::JSON.method(:load)
    @backend_name   = :json
    return true
  rescue StandardError, ScriptError => err
    Mmtrix::Agent.logger.debug "%p while loading JSON library: %s" % [ err, err.message ] if
      defined?( Mmtrix::Agent ) && Mmtrix::Agent.respond_to?( :logger )
  end
end
load_okjson() click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 38
def self.load_okjson
  require 'mmtrix/okjson'
  @load_method = ::Mmtrix::OkJson.method(:decode)
  @dump_method = ::Mmtrix::OkJson.method(:encode)
  @backend_name = :okjson
end
normalize(o) click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 74
def self.normalize(o)
  Mmtrix::Agent::EncodingNormalizer.normalize_object(o)
end
normalize_string(s) click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 70
def self.normalize_string(s)
  Mmtrix::Agent::StringNormalizer.normalize_string(s)
end
supports_normalization?() click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 55
def self.supports_normalization?
  Mmtrix::LanguageSupport.supports_string_encodings?
end
usable_for_collector_serialization?() click to toggle source
# File lib/mmtrix/json_wrapper.rb, line 47
def self.usable_for_collector_serialization?
  @backend_name == :json
end