From a26d9c3eadb168d1a572402e207ca6c4c86805a6 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 16 Jan 2019 10:46:34 -0800 Subject: Dump Hash ivars before elements When the Hash is revived, the ivars will be set before elements. This is for the case when the hash setter depends on ivars set on the hash. --- lib/psych/visitors/yaml_tree.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/psych/visitors/yaml_tree.rb b/lib/psych/visitors/yaml_tree.rb index 62d1d5c..79ca129 100644 --- a/lib/psych/visitors/yaml_tree.rb +++ b/lib/psych/visitors/yaml_tree.rb @@ -428,15 +428,6 @@ module Psych node = @emitter.start_mapping(nil, tag, false, Psych::Nodes::Mapping::BLOCK) register(o, node) - # Dump the elements - accept 'elements' - @emitter.start_mapping nil, nil, true, Nodes::Mapping::BLOCK - o.each do |k,v| - accept k - accept v - end - @emitter.end_mapping - # Dump the ivars accept 'ivars' @emitter.start_mapping nil, nil, true, Nodes::Mapping::BLOCK @@ -446,6 +437,15 @@ module Psych end @emitter.end_mapping + # Dump the elements + accept 'elements' + @emitter.start_mapping nil, nil, true, Nodes::Mapping::BLOCK + o.each do |k,v| + accept k + accept v + end + @emitter.end_mapping + @emitter.end_mapping else tag = "!ruby/hash:#{o.class}" -- cgit v1.2.3