diff options
| author | Jack Nagel | 2013-06-22 16:51:09 -0500 |
|---|---|---|
| committer | Jack Nagel | 2013-06-22 21:34:03 -0500 |
| commit | d6929f96a5324e245b4370f94314c8e10655367a (patch) | |
| tree | 5864c83a7de917aa4c358eddd30db4479f7eed4b /Library/Homebrew/utils/json.rb | |
| parent | d8aab8cb04bab5f1a00647d62e55dfdd5e40255b (diff) | |
| download | brew-d6929f96a5324e245b4370f94314c8e10655367a.tar.bz2 | |
Use OkJson directly
Diffstat (limited to 'Library/Homebrew/utils/json.rb')
| -rw-r--r-- | Library/Homebrew/utils/json.rb | 25 |
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 |
