File tree 1 file changed +18
-4
lines changed
1 file changed +18
-4
lines changed Original file line number Diff line number Diff line change @@ -19,15 +19,29 @@ module NodeUtils
19
19
# @yield [YARD::Parser::Ruby::AstNode]
20
20
sig { params ( node : YARD ::Parser ::Ruby ::AstNode , _blk : T . proc . params ( n : YARD ::Parser ::Ruby ::AstNode ) . void ) . void }
21
21
def self . bfs_traverse ( node , &_blk )
22
- queue = [ node ]
22
+ queue = Queue . new
23
+ queue . push ( node )
23
24
until queue . empty?
24
- n = T . must ( queue . shift )
25
+ n = queue . shift ( true )
25
26
yield n
26
- n . children . each { queue . push ( _1 ) }
27
- queue . pop if n . is_a? ( YARD ::Parser ::Ruby ::MethodCallNode ) && SKIP_METHOD_CONTENTS . include? ( n . method_name ( true ) )
27
+ enque_children ( queue , n )
28
28
end
29
29
end
30
30
31
+ sig { params ( queue : Queue , node : YARD ::Parser ::Ruby ::AstNode ) . void }
32
+ def self . enque_children ( queue , node )
33
+ num_children = node . children . size
34
+ node . children . each_with_index do |child , i |
35
+ next if i == num_children - 1 &&
36
+ node . is_a? ( YARD ::Parser ::Ruby ::MethodCallNode ) &&
37
+ SKIP_METHOD_CONTENTS . include? ( node . method_name ( true ) )
38
+
39
+ queue . push ( child )
40
+ end
41
+ end
42
+
43
+ # Delete a node from its parent
44
+
31
45
sig { params ( node : YARD ::Parser ::Ruby ::AstNode ) . void }
32
46
def self . delete_node ( node ) = node . parent . children . delete ( node )
33
47
You can’t perform that action at this time.
0 commit comments