summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2019-01-16 10:46:34 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2019-01-16 10:46:34 -0800
commita26d9c3eadb168d1a572402e207ca6c4c86805a6 (patch)
tree7d7aed762276e0e7d532d9e5fc71a11dff729cc7 /lib
parent616d3a8da466a67682f39368a9ad66851d0c70f3 (diff)
downloadpsych-a26d9c3eadb168d1a572402e207ca6c4c86805a6.zip
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/psych/visitors/yaml_tree.rb18
1 files changed, 9 insertions, 9 deletions
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}"