Sha256: b53f8c0a4a743f0057829700b76e8bed8386135286676c37da3bba0cde9c78b0

Contents?: true

Size: 1.27 KB

Versions: 21

Compression:

Stored size: 1.27 KB

Contents

require 'multi_json/vendor/okjson'

module MultiJson
  module Adapters
    class OkJson
      ParseError = ::MultiJson::OkJson::Error

      def self.load(string, options={}) #:nodoc:
        string = string.read if string.respond_to?(:read)
        result = ::MultiJson::OkJson.decode("[#{string}]").first
        options[:symbolize_keys] ? symbolize_keys(result) : result
      end

      def self.dump(object, options={}) #:nodoc:
        ::MultiJson::OkJson.valenc(stringify_keys(object))
      end

      def self.symbolize_keys(object) #:nodoc:
        modify_keys(object) do |key|
          key.is_a?(String) ? key.to_sym : key
        end
      end

      def self.stringify_keys(object) #:nodoc:
        modify_keys(object) do |key|
          key.respond_to?(:to_s) ? key.to_s : key
        end
      end

      def self.modify_keys(object, &modifier) #:nodoc:
        case object
        when Array
          object.map do |value|
            modify_keys(value, &modifier)
          end
        when Hash
          object.inject({}) do |result, (key, value)|
            new_key   = modifier.call(key)
            new_value = modify_keys(value, &modifier)
            result.merge! new_key => new_value
          end
        else
          object
        end
      end
    end
  end
end

Version data entries

21 entries across 12 versions & 9 rubygems

Version Path
multi_json-1.5.1 lib/multi_json/adapters/ok_json.rb
graphael-on-rails-0.5.1 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
graphael-on-rails-0.0.1 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
devise_sociable-0.1.0 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
backbone-queryparams-rails-0.0.1 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
railscast-assets-0.0.2 vendor/bundle/gems/backbone-forms-on-rails-0.10.0/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
railscast-assets-0.0.2 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
backbone-forms-on-rails-0.10.0 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
backbone-forms-on-rails-0.10.0 vendor/bundle/gems/backbone-forms-on-rails-0.10.0/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
backbone-deep-rails-0.0.1 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.3 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb
jquery_regex-0.0.1 vendor/bundle/gems/multi_json-1.5.0/lib/multi_json/adapters/ok_json.rb