1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/psych] Fix symabolize_name with non-string keys

1c5c29e81f
This commit is contained in:
Jean Boussier 2021-02-25 18:36:15 +01:00 committed by Hiroshi SHIBATA
parent 830778db95
commit a3ceed50b8
No known key found for this signature in database
GPG key ID: F9CF13417264FAC2
2 changed files with 5 additions and 4 deletions

View file

@ -366,7 +366,7 @@ module Psych
hash[key] = val hash[key] = val
end end
else else
if !tagged && @symbolize_names if !tagged && @symbolize_names && key.is_a?(String)
key = key.to_sym key = key.to_sym
elsif !@freeze elsif !@freeze
key = deduplicate(key) key = deduplicate(key)

View file

@ -371,17 +371,18 @@ class TestPsych < Psych::TestCase
yaml = <<-eoyml yaml = <<-eoyml
foo: foo:
bar: baz bar: baz
1: 2
hoge: hoge:
- fuga: piyo - fuga: piyo
eoyml eoyml
result = Psych.load(yaml) result = Psych.load(yaml)
assert_equal result, { "foo" => { "bar" => "baz"}, "hoge" => [{ "fuga" => "piyo" }] } assert_equal result, { "foo" => { "bar" => "baz", 1 => 2 }, "hoge" => [{ "fuga" => "piyo" }] }
result = Psych.load(yaml, symbolize_names: true) result = Psych.load(yaml, symbolize_names: true)
assert_equal result, { foo: { bar: "baz" }, hoge: [{ fuga: "piyo" }] } assert_equal result, { foo: { bar: "baz", 1 => 2 }, hoge: [{ fuga: "piyo" }] }
result = Psych.safe_load(yaml, symbolize_names: true) result = Psych.safe_load(yaml, symbolize_names: true)
assert_equal result, { foo: { bar: "baz" }, hoge: [{ fuga: "piyo" }] } assert_equal result, { foo: { bar: "baz", 1 => 2 }, hoge: [{ fuga: "piyo" }] }
end end
end end