summaryrefslogtreecommitdiff
path: root/ext/psych/lib/psych/nodes
diff options
context:
space:
mode:
Diffstat (limited to 'ext/psych/lib/psych/nodes')
-rw-r--r--ext/psych/lib/psych/nodes/node.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/psych/lib/psych/nodes/node.rb b/ext/psych/lib/psych/nodes/node.rb
index bfd91f99ec..7c040ec463 100644
--- a/ext/psych/lib/psych/nodes/node.rb
+++ b/ext/psych/lib/psych/nodes/node.rb
@@ -6,6 +6,8 @@ module Psych
# The base class for any Node in a YAML parse tree. This class should
# never be instantiated.
class Node
+ include Enumerable
+
# The children of this node
attr_reader :children
@@ -18,6 +20,14 @@ module Psych
end
###
+ # Iterate over each node in the tree. Yields each node to +block+ depth
+ # first.
+ def each &block
+ return enum_for :each unless block_given?
+ Visitors::DepthFirst.new(block).accept self
+ end
+
+ ###
# Convert this node to Ruby.
#
# See also Psych::Visitors::ToRuby