Sha256: aca909929b65d4bc694423bfd1be7a8a927a1c057f5a4ce7ed914b64da21620d

Contents?: true

Size: 1.24 KB

Versions: 67

Compression:

Stored size: 1.24 KB

Contents

require "multi_json/vendor/ok_json" unless defined?(::OkJson)

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

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

      def self.encode(object) #:nodoc:
        ::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.is_a?(Symbol) ? 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

67 entries across 67 versions & 4 rubygems

Version Path
vulcan-0.8.2 server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
vulcan-0.8.1 server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.7.3 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.7.2 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.7.1 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.7.0 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.6.7 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.6.6 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.6.5 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.6.4 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.6.3 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
vulcan-0.8.0 server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
vulcan-0.7.2 server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.6.2 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.6.1 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
brightbox-cli-0.18.1 lib/brightbox-cli/vendor/multi_json/lib/multi_json/engines/ok_json.rb
dirty_history-0.6.0 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
dirty_history-0.5.4 dirty_history/ruby/1.9.1/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
vulcan-0.7.1 server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb
vulcan-0.7.0 server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb