Sha256: 4c7d9d8de1a4e8bed658caccb8fd59c6d7cf46d7e65ef4d96567df4e097098fc
Contents?: true
Size: 1.35 KB
Versions: 3
Compression:
Stored size: 1.35 KB
Contents
# frozen_string_literal: true module Jellyfish; end module Jellyfish::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) 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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jellyfish-1.4.0 | lib/jellyfish/json.rb |
jellyfish-1.3.1 | lib/jellyfish/json.rb |
jellyfish-1.3.0 | lib/jellyfish/json.rb |