mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/psych] Fix anchor lookup with symbolized names
https://github.com/ruby/psych/commit/ef74fc01e2
This commit is contained in:
parent
e9adc2f420
commit
666c077691
2 changed files with 17 additions and 7 deletions
|
@ -337,18 +337,12 @@ module Psych
|
|||
list
|
||||
end
|
||||
|
||||
SHOVEL = '<<'
|
||||
def revive_hash hash, o
|
||||
o.children.each_slice(2) { |k,v|
|
||||
key = accept(k)
|
||||
if @symbolize_names
|
||||
key = key.to_sym
|
||||
elsif !@freeze
|
||||
key = deduplicate(key)
|
||||
end
|
||||
val = accept(v)
|
||||
|
||||
if key == SHOVEL && k.tag != "tag:yaml.org,2002:str"
|
||||
if key == '<<' && k.tag != "tag:yaml.org,2002:str"
|
||||
case v
|
||||
when Nodes::Alias, Nodes::Mapping
|
||||
begin
|
||||
|
@ -370,6 +364,12 @@ module Psych
|
|||
hash[key] = val
|
||||
end
|
||||
else
|
||||
if @symbolize_names
|
||||
key = key.to_sym
|
||||
elsif !@freeze
|
||||
key = deduplicate(key)
|
||||
end
|
||||
|
||||
hash[key] = val
|
||||
end
|
||||
|
||||
|
|
|
@ -17,6 +17,16 @@ map:
|
|||
assert_equal hash, doc
|
||||
end
|
||||
|
||||
def test_merge_key_with_bare_hash_symbolized_names
|
||||
doc = Psych.load <<-eodoc, symbolize_names: true
|
||||
map:
|
||||
<<:
|
||||
hello: world
|
||||
eodoc
|
||||
hash = { map: { hello: "world" } }
|
||||
assert_equal hash, doc
|
||||
end
|
||||
|
||||
def test_roundtrip_with_chevron_key
|
||||
h = {}
|
||||
v = { 'a' => h, '<<' => h }
|
||||
|
|
Loading…
Add table
Reference in a new issue