diff options
Diffstat (limited to 'ext/psych/lib/psych/visitors/depth_first.rb')
-rw-r--r-- | ext/psych/lib/psych/visitors/depth_first.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/ext/psych/lib/psych/visitors/depth_first.rb b/ext/psych/lib/psych/visitors/depth_first.rb new file mode 100644 index 0000000000..c6eb814ac0 --- /dev/null +++ b/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 |