class RBI::Rewriters::Merge::ConflictTreeMerger
Merge
adjacent conflict trees
Transform this: ~~~rb class Foo
<<<<<<< left def m1; end ======= def m1(a); end >>>>>>> right <<<<<<< left def m2(a); end ======= def m2; end >>>>>>> right
end ~~~
Into this: ~~~rb class Foo
<<<<<<< left def m1; end def m2(a); end ======= def m1(a); end def m2; end >>>>>>> right
end ~~~
Public Instance Methods
visit(node)
click to toggle source
# File lib/rbi/rewriters/merge_trees.rb, line 243 def visit(node) visit_all(node.nodes) if node.is_a?(Tree) end
visit_all(nodes)
click to toggle source
# File lib/rbi/rewriters/merge_trees.rb, line 248 def visit_all(nodes) last_conflict_tree = T.let(nil, T.nilable(ConflictTree)) nodes.dup.each do |node| if node.is_a?(ConflictTree) if last_conflict_tree merge_conflict_trees(last_conflict_tree.left, node.left) merge_conflict_trees(last_conflict_tree.right, node.right) node.detach next else last_conflict_tree = node end end visit(node) end end
Private Instance Methods
merge_conflict_trees(left, right)
click to toggle source
# File lib/rbi/rewriters/merge_trees.rb, line 269 def merge_conflict_trees(left, right) right.nodes.dup.each do |node| left << node end end