From 3468811ed1dc3d907bd837f1639d587afd4ca3ae Mon Sep 17 00:00:00 2001 From: Cody Horton Date: Fri, 16 May 2025 09:58:27 -0500 Subject: [PATCH] [ruby/json] fix for pretty_generate throwing wrong number of arguments error https://github.com/ruby/json/commit/8433571dcf --- ext/json/lib/json/common.rb | 2 +- test/json/json_generator_test.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ext/json/lib/json/common.rb b/ext/json/lib/json/common.rb index 7627761b52..320df2a947 100644 --- a/ext/json/lib/json/common.rb +++ b/ext/json/lib/json/common.rb @@ -490,7 +490,7 @@ module JSON # } # def pretty_generate(obj, opts = nil) - return state.generate(obj) if State === opts + return opts.generate(obj) if State === opts options = PRETTY_GENERATE_OPTIONS diff --git a/test/json/json_generator_test.rb b/test/json/json_generator_test.rb index 55a3065ae5..f869e43fbe 100755 --- a/test/json/json_generator_test.rb +++ b/test/json/json_generator_test.rb @@ -122,6 +122,22 @@ class JSONGeneratorTest < Test::Unit::TestCase assert_equal '666', pretty_generate(666) end + def test_generate_pretty_custom + state = State.new(:space_before => "", :space => "", :indent => "", :object_nl => "\n\n", :array_nl => "") + json = pretty_generate({1=>{}, 2=>['a','b'], 3=>4}, state) + assert_equal(<<~'JSON'.chomp, json) + { + + "1":{}, + + "2":["a","b"], + + "3":4 + + } + JSON + end + def test_generate_custom state = State.new(:space_before => " ", :space => " ", :indent => "", :object_nl => "\n", :array_nl => "") json = generate({1=>{2=>3,4=>[5,6]}}, state)