Skip to content

Commit 1c5c29e

Browse files
committed
Fix symabolize_name with non-string keys
1 parent 091cd46 commit 1c5c29e

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

lib/psych/visitors/to_ruby.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ def revive_hash hash, o, tagged= false
366366
hash[key] = val
367367
end
368368
else
369-
if !tagged && @symbolize_names
369+
if !tagged && @symbolize_names && key.is_a?(String)
370370
key = key.to_sym
371371
elsif !@freeze
372372
key = deduplicate(key)

test/psych/test_psych.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -371,17 +371,18 @@ def test_symbolize_names
371371
yaml = <<-eoyml
372372
foo:
373373
bar: baz
374+
1: 2
374375
hoge:
375376
- fuga: piyo
376377
eoyml
377378

378379
result = Psych.load(yaml)
379-
assert_equal result, { "foo" => { "bar" => "baz"}, "hoge" => [{ "fuga" => "piyo" }] }
380+
assert_equal result, { "foo" => { "bar" => "baz", 1 => 2 }, "hoge" => [{ "fuga" => "piyo" }] }
380381

381382
result = Psych.load(yaml, symbolize_names: true)
382-
assert_equal result, { foo: { bar: "baz" }, hoge: [{ fuga: "piyo" }] }
383+
assert_equal result, { foo: { bar: "baz", 1 => 2 }, hoge: [{ fuga: "piyo" }] }
383384

384385
result = Psych.safe_load(yaml, symbolize_names: true)
385-
assert_equal result, { foo: { bar: "baz" }, hoge: [{ fuga: "piyo" }] }
386+
assert_equal result, { foo: { bar: "baz", 1 => 2 }, hoge: [{ fuga: "piyo" }] }
386387
end
387388
end

0 commit comments

Comments
 (0)