1module Psych 2 module Visitors 3 class DepthFirst < Psych::Visitors::Visitor 4 def initialize block 5 @block = block 6 end 7 8 private 9 10 def nary o 11 o.children.each { |x| visit x } 12 @block.call o 13 end 14 alias :visit_Psych_Nodes_Stream :nary 15 alias :visit_Psych_Nodes_Document :nary 16 alias :visit_Psych_Nodes_Sequence :nary 17 alias :visit_Psych_Nodes_Mapping :nary 18 19 def terminal o 20 @block.call o 21 end 22 alias :visit_Psych_Nodes_Scalar :terminal 23 alias :visit_Psych_Nodes_Alias :terminal 24 end 25 end 26end 27