We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents def5322 + a6f966f commit 3c234b7Copy full SHA for 3c234b7
1 file changed
lib/tree.rb
@@ -772,6 +772,28 @@ def each_leaf(&block)
772
end
773
774
775
+ # Yields every level of the (sub)tree rooted at this node to the
776
+ # specified block.
777
+ #
778
+ # Will yield this node as well since it is considered the first level.
779
780
+ # @yieldparam level [Array<Tree::TreeNode>] All nodes in the level
781
782
+ # @return [Tree::TreeNode] this node, if a block if given
783
+ # @return [Enumerator] an enumerator on this tree, if a block is *not* given
784
+ def each_level &block
785
+ if block_given?
786
+ level = [self]
787
+ until level.empty?
788
+ yield level
789
+ level = level.map(&:children).flatten
790
+ end
791
+ return self
792
+ else
793
+ self.each
794
795
796
+
797
# @!endgroup
798
799
# @!group Navigating the Child Nodes
0 commit comments