зеркало из https://github.com/github/ruby.git
[ruby/psych] Fix symabolize_name with non-string keys
https://github.com/ruby/psych/commit/1c5c29e81f
This commit is contained in:
Родитель
830778db95
Коммит
a3ceed50b8
|
@ -366,7 +366,7 @@ module Psych
|
|||
hash[key] = val
|
||||
end
|
||||
else
|
||||
if !tagged && @symbolize_names
|
||||
if !tagged && @symbolize_names && key.is_a?(String)
|
||||
key = key.to_sym
|
||||
elsif !@freeze
|
||||
key = deduplicate(key)
|
||||
|
|
|
@ -371,17 +371,18 @@ class TestPsych < Psych::TestCase
|
|||
yaml = <<-eoyml
|
||||
foo:
|
||||
bar: baz
|
||||
1: 2
|
||||
hoge:
|
||||
- fuga: piyo
|
||||
eoyml
|
||||
|
||||
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)
|
||||
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)
|
||||
assert_equal result, { foo: { bar: "baz" }, hoge: [{ fuga: "piyo" }] }
|
||||
assert_equal result, { foo: { bar: "baz", 1 => 2 }, hoge: [{ fuga: "piyo" }] }
|
||||
end
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче