Skip to content
Snippets Groups Projects
Commit d6929f96 authored by Jack Nagel's avatar Jack Nagel
Browse files

Use OkJson directly

parent d8aab8cb
No related branches found
No related tags found
No related merge requests found
......@@ -15,10 +15,6 @@ class Option
end
alias_method :to_str, :to_s
def to_json
flag.inspect
end
def <=>(other)
name <=> other.name
end
......
......@@ -91,8 +91,8 @@ class Tab < OpenStruct
def to_json
Utils::JSON.dump({
:used_options => used_options.to_a,
:unused_options => unused_options.to_a,
:used_options => used_options.map(&:to_s),
:unused_options => unused_options.map(&:to_s),
:built_as_bottle => built_as_bottle,
:poured_from_bottle => poured_from_bottle,
:tapped_from => tapped_from,
......
......@@ -14,10 +14,6 @@ class OptionTests < Test::Unit::TestCase
assert_equal "--foo", @option.to_str
end
def test_to_json
assert_equal %q{"--foo"}, @option.to_json
end
def test_equality
foo = Option.new("foo")
bar = Option.new("bar")
......
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment