aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/utils/json.rb
diff options
context:
space:
mode:
authorJack Nagel2013-06-22 16:51:09 -0500
committerJack Nagel2013-06-22 21:34:03 -0500
commitd6929f96a5324e245b4370f94314c8e10655367a (patch)
tree5864c83a7de917aa4c358eddd30db4479f7eed4b /Library/Homebrew/utils/json.rb
parentd8aab8cb04bab5f1a00647d62e55dfdd5e40255b (diff)
downloadbrew-d6929f96a5324e245b4370f94314c8e10655367a.tar.bz2
Use OkJson directly
Diffstat (limited to 'Library/Homebrew/utils/json.rb')
-rw-r--r--Library/Homebrew/utils/json.rb25
1 files changed, 19 insertions, 6 deletions
diff --git a/Library/Homebrew/utils/json.rb b/Library/Homebrew/utils/json.rb
index f52881c84..0548a5cb3 100644
--- a/Library/Homebrew/utils/json.rb
+++ b/Library/Homebrew/utils/json.rb
@@ -1,4 +1,4 @@
-require 'vendor/multi_json'
+require 'vendor/okjson'
module Utils
module JSON
@@ -7,15 +7,28 @@ module Utils
Error = Class.new(StandardError)
def load(str)
- MultiJson.load(str)
- rescue MultiJson::DecodeError => e
+ Vendor::OkJson.decode(str)
+ rescue Vendor::OkJson::Error => e
raise Error, e.message
end
def dump(obj)
- MultiJson.dump(obj)
- rescue MultiJson::EncodeError => e
- raise Error, e.message
+ Vendor::OkJson.encode(stringify_keys(obj))
+ end
+
+ def stringify_keys(obj)
+ case obj
+ when Array
+ obj.map { |val| stringify_keys(val) }
+ when Hash
+ obj.inject({}) do |result, (key, val)|
+ key = key.respond_to?(:to_s) ? key.to_s : key
+ val = stringify_keys(val)
+ result.merge!(key => val)
+ end
+ else
+ obj
+ end
end
end
end