def find_balanced_opening_bracket(self, start, brackets, unbalanced=0):
new_start = start
for i in range(unbalanced or 1):
prev_opening_bracket = reverse_search_by_pt(self.view, brackets[0],
start=0,
end=new_start,
flags=LITERAL)
if prev_opening_bracket is None:
# Unbalanced brackets; nothing we can do.
return
new_start = prev_opening_bracket.begin()
nested = 0
while True:
next_closing_bracket = reverse_search_by_pt(self.view, brackets[1],
start=prev_opening_bracket.a,
end=start,
flags=LITERAL)
if not next_closing_bracket:
break
nested += 1
start = next_closing_bracket.begin()
if nested > 0:
return self.find_balanced_opening_bracket(prev_opening_bracket.begin(),
brackets,
nested)
else:
return prev_opening_bracket.begin()
评论列表
文章目录