def next_unbalanced_tag(view, search=None, search_args={}, restart_at=None, tags=[]):
assert search and restart_at, 'wrong call'
region, tag, is_end_tag = search(view, **search_args)
if not region:
return None, None
if not is_end_tag:
tags.append(tag)
search_args.update(restart_at(region))
return next_unbalanced_tag(view, search, search_args, restart_at, tags)
if not tags or (tag not in tags):
return region, tag
while tag != tags.pop():
continue
search_args.update(restart_at(region))
return next_unbalanced_tag(view, search, search_args, restart_at, tags)
评论列表
文章目录