Sha256: 3afa76b093ac0b48b2f8fecd27d491866034cde49481eae4ad5f373530bce4e7

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

# encoding: UTF-8

# require 'yajl'
require 'oj'

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

1 entries across 1 versions & 1 rubygems

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