summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/json/ext/generator/state.rb10
-rwxr-xr-xtest/json/json_generator_test.rb21
2 files changed, 26 insertions, 5 deletions
diff --git a/lib/json/ext/generator/state.rb b/lib/json/ext/generator/state.rb
index 4f9675d7b5..29688142f0 100644
--- a/lib/json/ext/generator/state.rb
+++ b/lib/json/ext/generator/state.rb
@@ -46,15 +46,15 @@ module JSON
opts.each do |key, value|
case key
when :indent
- self.indent = value
+ self.indent = value || ''
when :space
- self.space = value
+ self.space = value || ''
when :space_before
- self.space_before = value
+ self.space_before = value || ''
when :array_nl
- self.array_nl = value
+ self.array_nl = value || ''
when :object_nl
- self.object_nl = value
+ self.object_nl = value || ''
when :max_nesting
self.max_nesting = value || 0
when :depth
diff --git a/test/json/json_generator_test.rb b/test/json/json_generator_test.rb
index 1670445a7f..57c4e6ceeb 100755
--- a/test/json/json_generator_test.rb
+++ b/test/json/json_generator_test.rb
@@ -174,6 +174,27 @@ class JSONGeneratorTest < Test::Unit::TestCase
assert s[:check_circular?]
end
+ def test_falsy_state
+ object = { foo: [1, 2], bar: { egg: :spam }}
+ expected_json = JSON.generate(
+ object,
+ array_nl: "",
+ indent: "",
+ object_nl: "",
+ space: "",
+ space_before: "",
+ )
+
+ assert_equal expected_json, JSON.generate(
+ object,
+ array_nl: nil,
+ indent: nil,
+ object_nl: nil,
+ space: nil,
+ space_before: nil,
+ )
+ end
+
def test_pretty_state
state = JSON.create_pretty_state
assert_equal({