summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCody Horton <[email protected]>2025-05-16 09:58:27 -0500
committerHiroshi SHIBATA <[email protected]>2025-05-19 11:19:17 +0900
commit3468811ed1dc3d907bd837f1639d587afd4ca3ae (patch)
treef7c3bdf0dd6a40d333e8924904f67a33ea4688c8
parent57e4176649f056966d860505694570d23200b44a (diff)
[ruby/json] fix for pretty_generate throwing wrong number of arguments error
https://github.com/ruby/json/commit/8433571dcf
-rw-r--r--ext/json/lib/json/common.rb2
-rwxr-xr-xtest/json/json_generator_test.rb16
2 files changed, 17 insertions, 1 deletions
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 => "<psb>", :space => "<ps>", :indent => "<pi>", :object_nl => "\n<po_nl>\n", :array_nl => "<pa_nl>")
+ json = pretty_generate({1=>{}, 2=>['a','b'], 3=>4}, state)
+ assert_equal(<<~'JSON'.chomp, json)
+ {
+ <po_nl>
+ <pi>"1"<psb>:<ps>{},
+ <po_nl>
+ <pi>"2"<psb>:<ps>[<pa_nl><pi><pi>"a",<pa_nl><pi><pi>"b"<pa_nl><pi>],
+ <po_nl>
+ <pi>"3"<psb>:<ps>4
+ <po_nl>
+ }
+ JSON
+ end
+
def test_generate_custom
state = State.new(:space_before => " ", :space => " ", :indent => "<i>", :object_nl => "\n", :array_nl => "<a_nl>")
json = generate({1=>{2=>3,4=>[5,6]}}, state)