summaryrefslogtreecommitdiff
path: root/ruby_2_2/ext/psych/lib/psych/visitors/depth_first.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_2_2/ext/psych/lib/psych/visitors/depth_first.rb')
-rw-r--r--ruby_2_2/ext/psych/lib/psych/visitors/depth_first.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/ruby_2_2/ext/psych/lib/psych/visitors/depth_first.rb b/ruby_2_2/ext/psych/lib/psych/visitors/depth_first.rb
new file mode 100644
index 0000000000..c6eb814ac0
--- /dev/null
+++ b/ruby_2_2/ext/psych/lib/psych/visitors/depth_first.rb
@@ -0,0 +1,26 @@
+module Psych
+ module Visitors
+ class DepthFirst < Psych::Visitors::Visitor
+ def initialize block
+ @block = block
+ end
+
+ private
+
+ def nary o
+ o.children.each { |x| visit x }
+ @block.call o
+ end
+ alias :visit_Psych_Nodes_Stream :nary
+ alias :visit_Psych_Nodes_Document :nary
+ alias :visit_Psych_Nodes_Sequence :nary
+ alias :visit_Psych_Nodes_Mapping :nary
+
+ def terminal o
+ @block.call o
+ end
+ alias :visit_Psych_Nodes_Scalar :terminal
+ alias :visit_Psych_Nodes_Alias :terminal
+ end
+ end
+end