aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/vendor/multi_json/engines
diff options
context:
space:
mode:
authorCharlie Sharpsteen2011-11-10 12:21:35 -0800
committerCharlie Sharpsteen2011-11-13 12:14:55 -0800
commit605dedb816f0ed2f7e3d49138b869686c8401e6d (patch)
treecfc8b58c9f497fff9df9b206081255538a3b5c1d /Library/Homebrew/vendor/multi_json/engines
parentf5c9333a0d42e86ac82fedfeefd89a1f18772629 (diff)
downloadhomebrew-605dedb816f0ed2f7e3d49138b869686c8401e6d.tar.bz2
Vendor Library: multi-json 1.0.3
Multi-JSON is a library that provides encode/decode support for casting Ruby objects to JSON strings and back again. This version of the library has been tested against ruby versions 1.8.6 and later. Having a JSON encoder/decoder in the toolbox helps now that the GitHub API only returns results in JSON format.
Diffstat (limited to 'Library/Homebrew/vendor/multi_json/engines')
-rw-r--r--Library/Homebrew/vendor/multi_json/engines/json_gem.rb21
-rw-r--r--Library/Homebrew/vendor/multi_json/engines/json_pure.rb21
-rw-r--r--Library/Homebrew/vendor/multi_json/engines/ok_json.rb48
-rw-r--r--Library/Homebrew/vendor/multi_json/engines/yajl.rb18
4 files changed, 108 insertions, 0 deletions
diff --git a/Library/Homebrew/vendor/multi_json/engines/json_gem.rb b/Library/Homebrew/vendor/multi_json/engines/json_gem.rb
new file mode 100644
index 000000000..dd2b1d499
--- /dev/null
+++ b/Library/Homebrew/vendor/multi_json/engines/json_gem.rb
@@ -0,0 +1,21 @@
+require 'json' unless defined?(::JSON)
+
+module MultiJson
+ module Engines
+ # Use the JSON gem to encode/decode.
+ class JsonGem
+ ParseError = ::JSON::ParserError
+
+ def self.decode(string, options = {}) #:nodoc:
+ opts = {}
+ opts[:symbolize_names] = options[:symbolize_keys]
+ string = string.read if string.respond_to?(:read)
+ ::JSON.parse(string, opts)
+ end
+
+ def self.encode(object) #:nodoc:
+ object.to_json
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/multi_json/engines/json_pure.rb b/Library/Homebrew/vendor/multi_json/engines/json_pure.rb
new file mode 100644
index 000000000..f89da0171
--- /dev/null
+++ b/Library/Homebrew/vendor/multi_json/engines/json_pure.rb
@@ -0,0 +1,21 @@
+require 'json/pure' unless defined?(::JSON)
+
+module MultiJson
+ module Engines
+ # Use JSON pure to encode/decode.
+ class JsonPure
+ ParseError = ::JSON::ParserError
+
+ def self.decode(string, options = {}) #:nodoc:
+ opts = {}
+ opts[:symbolize_names] = options[:symbolize_keys]
+ string = string.read if string.respond_to?(:read)
+ ::JSON.parse(string, opts)
+ end
+
+ def self.encode(object) #:nodoc:
+ object.to_json
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/multi_json/engines/ok_json.rb b/Library/Homebrew/vendor/multi_json/engines/ok_json.rb
new file mode 100644
index 000000000..c06f80123
--- /dev/null
+++ b/Library/Homebrew/vendor/multi_json/engines/ok_json.rb
@@ -0,0 +1,48 @@
+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
diff --git a/Library/Homebrew/vendor/multi_json/engines/yajl.rb b/Library/Homebrew/vendor/multi_json/engines/yajl.rb
new file mode 100644
index 000000000..8dfe4b1aa
--- /dev/null
+++ b/Library/Homebrew/vendor/multi_json/engines/yajl.rb
@@ -0,0 +1,18 @@
+require 'yajl' unless defined?(Yajl)
+
+module MultiJson
+ module Engines
+ # Use the Yajl-Ruby library to encode/decode.
+ class Yajl
+ ParseError = ::Yajl::ParseError
+
+ def self.decode(string, options = {}) #:nodoc:
+ ::Yajl::Parser.new(:symbolize_keys => options[:symbolize_keys]).parse(string)
+ end
+
+ def self.encode(object) #:nodoc:
+ ::Yajl::Encoder.new.encode(object)
+ end
+ end
+ end
+end