Sha256: 37aff78499649c22f6e51c4a908b532f5ccd27356861420e3bde772a807d4258

Contents?: true

Size: 1.34 KB

Versions: 14

Compression:

Stored size: 1.34 KB

Contents

module RestCore; end
module RestCore::Json
  module MultiJson
    def self.extended mod
      mod.const_set(:ParseError, ::MultiJson::DecodeError)
    end
    def encode hash
      ::MultiJson.dump(hash)
    end
    def decode json
      ::MultiJson.load(json)
    end
  end

  module YajlRuby
    def self.extended mod
      mod.const_set(:ParseError, Yajl::ParseError)
    end
    def encode hash
      Yajl::Encoder.encode(hash)
    end
    def decode json
      Yajl::Parser.parse(json)
    end
  end

  module Json
    def self.extended mod
      mod.const_set(:ParseError, JSON::ParserError)
    end
    def encode hash
      JSON.dump(hash)
    end
    def decode json
      JSON.parse(json, :quirks_mode => true)
    end
  end

  def self.select_json! mod, picked=false
    if    Object.const_defined?(:MultiJson)
      mod.send(:extend, MultiJson)
    elsif Object.const_defined?(:Yajl)
      mod.send(:extend, YajlRuby)
    elsif Object.const_defined?(:JSON)
      mod.send(:extend, Json)
    elsif picked
      raise LoadError.new(
        'No JSON library found. Tried: multi_json, yajl-ruby, json.')
    else
      # pick a json gem if available
      %w[multi_json yajl json].each{ |json|
        begin
          require json
          break
        rescue LoadError
        end
      }
      select_json!(mod, true)
    end
  end

  select_json!(self)
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
rest-core-3.6.0 lib/rest-core/util/json.rb
rest-core-3.5.92 lib/rest-core/util/json.rb
rest-core-3.5.91 lib/rest-core/util/json.rb
rest-core-3.5.9 lib/rest-core/util/json.rb
rest-core-3.5.8 lib/rest-core/util/json.rb
rest-core-3.5.7 lib/rest-core/util/json.rb
rest-core-3.5.6 lib/rest-core/util/json.rb
rest-core-3.5.4 lib/rest-core/util/json.rb
rest-core-3.5.3 lib/rest-core/util/json.rb
rest-core-3.5.2 lib/rest-core/util/json.rb
rest-core-3.5.1 lib/rest-core/util/json.rb
rest-core-3.5.0 lib/rest-core/util/json.rb
rest-core-3.4.1 lib/rest-core/util/json.rb
rest-core-3.4.0 lib/rest-core/util/json.rb