Sha256: 8868c3dbc906f57fea8ce4fdfac0379d24d84e5b2195ff687fcf2424ef483c7b

Contents?: true

Size: 1.04 KB

Versions: 10

Compression:

Stored size: 1.04 KB

Contents

# encoding: UTF-8

require 'yajl'

Oj.default_options = { mode: :compat } if defined?(Oj)

module Spontaneous
  module JSON
    if defined?(::Oj)
      module OjParser
        def parse(json_string)
          ::Oj.load(json_string, symbol_keys: true)
        rescue
          nil
        end

        def encode(object)
          ::Oj.dump(object)
        end
      end
    end

    if defined?(::Yajl)
      module YajlParser
        def parser
          Yajl::Parser.new(:symbolize_keys => true)
        end
        def encoder
          Yajl::Encoder.new
        end

        def parse(json_string)
          parser.parse(json_string)
        rescue
          nil
        end

        def encode(object)
          encoder.encode(object)
        end
      end
    end

    extend const_get ["OjParser", "YajlParser"].detect { |m| const_defined?(m) }

    def parse_json(json_string)
      Spontaneous::JSON.parse(json_string)
    end
    alias_method :decode_json, :parse_json

    def encode_json(object)
      Spontaneous::JSON.encode(object)
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
spontaneous-0.2.0.beta9 lib/spontaneous/json.rb
spontaneous-0.2.0.beta8 lib/spontaneous/json.rb
spontaneous-0.2.0.beta7 lib/spontaneous/json.rb
spontaneous-0.2.0.beta6 lib/spontaneous/json.rb
spontaneous-0.2.0.beta5 lib/spontaneous/json.rb
spontaneous-0.2.0.beta4 lib/spontaneous/json.rb
spontaneous-0.2.0.beta3 lib/spontaneous/json.rb
spontaneous-0.2.0.beta2 lib/spontaneous/json.rb
spontaneous-0.2.0.beta1 lib/spontaneous/json.rb
spontaneous-0.2.0.alpha7 lib/spontaneous/json.rb