summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2015-01-03 00:55:33 +0100
committerFlorian Frank <flori@ping.de>2015-01-03 00:55:33 +0100
commit41fee9f1453b57e6f0cd46d16e07e329c16cd17c (patch)
treee6f157d60ec2a924c4b30f4a24d7e380dc344718
parentb51273b301db4f772e9e2e0d2b7cd0625c1c89b3 (diff)
parentb3819dc971b700c58ecbbcded2450cd208a9400e (diff)
downloadjson-41fee9f1453b57e6f0cd46d16e07e329c16cd17c.tar.gz
Merge pull request #225 from mmacvicar/fix-space-before
JSON::State is not using the parameter space_before
-rw-r--r--ext/json/ext/generator/generator.c1
-rwxr-xr-xtests/test_json_generate.rb13
2 files changed, 14 insertions, 0 deletions
diff --git a/ext/json/ext/generator/generator.c b/ext/json/ext/generator/generator.c
index 976afc5..22d8952 100644
--- a/ext/json/ext/generator/generator.c
+++ b/ext/json/ext/generator/generator.c
@@ -871,6 +871,7 @@ static FBuffer *cState_prepare_buffer(VALUE self)
} else {
state->object_delim2 = fbuffer_alloc(16);
}
+ if (state->space_before) fbuffer_append(state->object_delim2, state->space_before, state->space_before_len);
fbuffer_append_char(state->object_delim2, ':');
if (state->space) fbuffer_append(state->object_delim2, state->space, state->space_len);
diff --git a/tests/test_json_generate.rb b/tests/test_json_generate.rb
index 117a155..c47ae88 100755
--- a/tests/test_json_generate.rb
+++ b/tests/test_json_generate.rb
@@ -73,6 +73,19 @@ EOT
assert_equal '666', pretty_generate(666, :quirks_mode => true)
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)
+ assert_equal(<<'EOT'.chomp, json)
+{
+<i>"1" : {
+<i><i>"2" : 3,
+<i><i>"4" : [<a_nl><i><i><i>5,<a_nl><i><i><i>6<a_nl><i><i>]
+<i>}
+}
+EOT
+ end
+
def test_fast_generate
json = fast_generate(@hash)
assert_equal(JSON.parse(@json2), JSON.parse(json))