[flori/json] JSON.dump: handle unenclosed hashes regression
Fix: https://github.com/flori/json/issues/553 We can never add keyword arguments to `dump` otherwise existing code using unenclosed hash will break. https://github.com/flori/json/commit/8e0076a3f2
This commit is contained in:
parent
5a2d70ef73
commit
a22ed89438
@ -611,7 +611,7 @@ module JSON
|
||||
# puts File.read(path)
|
||||
# Output:
|
||||
# {"foo":[0,1],"bar":{"baz":2,"bat":3},"bam":"bad"}
|
||||
def dump(obj, anIO = nil, limit = nil, strict: NOT_SET)
|
||||
def dump(obj, anIO = nil, limit = nil, kwargs = nil)
|
||||
if anIO and limit.nil?
|
||||
anIO = anIO.to_io if anIO.respond_to?(:to_io)
|
||||
unless anIO.respond_to?(:write)
|
||||
@ -621,7 +621,7 @@ module JSON
|
||||
end
|
||||
opts = JSON.dump_default_options
|
||||
opts = opts.merge(:max_nesting => limit) if limit
|
||||
opts[:strict] = strict if NOT_SET != strict
|
||||
merge_dump_options(opts, **kwargs) if kwargs
|
||||
result = generate(obj, opts)
|
||||
if anIO
|
||||
anIO.write result
|
||||
@ -637,6 +637,12 @@ module JSON
|
||||
def self.iconv(to, from, string)
|
||||
string.encode(to, from)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def merge_dump_options(opts, strict: NOT_SET)
|
||||
opts[:strict] = strict if NOT_SET != strict
|
||||
end
|
||||
end
|
||||
|
||||
module ::Kernel
|
||||
|
@ -62,6 +62,10 @@ EOT
|
||||
assert_equal '666', generate(666)
|
||||
end
|
||||
|
||||
def test_dump_unenclosed_hash
|
||||
assert_equal '{"a":1,"b":2}', dump(a: 1, b: 2)
|
||||
end
|
||||
|
||||
def test_generate_pretty
|
||||
json = pretty_generate({})
|
||||
assert_equal(<<'EOT'.chomp, json)
|
||||
|
Loading…
x
Reference in New Issue
Block a user