Sha256: e96780a90cf91ac86ab08933f80cc229914f1747bd0b0e82e0c385b51f726e10

Contents?: true

Size: 954 Bytes

Versions: 1

Compression:

Stored size: 954 Bytes

Contents

# encoding: UTF-8

require 'oj'

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

module Spontaneous
  module JSON
    module OjParser
      def parse(json_string)
        ::Oj.load(json_string)
      rescue
        nil
      end

      def encode(object)
        ::Oj.dump(object)
      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 OjParser

    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

1 entries across 1 versions & 1 rubygems

Version Path
spontaneous-0.2.0.alpha3 lib/spontaneous/json.rb