Move should_explode handling to bracket_split_build_line

This commit is contained in:
Łukasz Langa 2018-09-26 08:53:56 -07:00
parent 1610fd6bc5
commit a4b5c085a3
No known key found for this signature in database
GPG Key ID: B26995E310250568

View File

@ -2191,9 +2191,12 @@ def left_hand_split(line: Line, py36: bool = False) -> Iterator[Line]:
if leaf.type in OPENING_BRACKETS: if leaf.type in OPENING_BRACKETS:
matching_bracket = leaf matching_bracket = leaf
current_leaves = body_leaves current_leaves = body_leaves
head = bracket_split_build_line(head_leaves, line) if not matching_bracket:
body = bracket_split_build_line(body_leaves, line, is_body=True) raise CannotSplit("No brackets found")
tail = bracket_split_build_line(tail_leaves, line)
head = bracket_split_build_line(head_leaves, line, matching_bracket)
body = bracket_split_build_line(body_leaves, line, matching_bracket, is_body=True)
tail = bracket_split_build_line(tail_leaves, line, matching_bracket)
bracket_split_succeeded_or_raise(head, body, tail) bracket_split_succeeded_or_raise(head, body, tail)
for result in (head, body, tail): for result in (head, body, tail):
if result: if result:
@ -2236,10 +2239,9 @@ def right_hand_split(
tail_leaves.reverse() tail_leaves.reverse()
body_leaves.reverse() body_leaves.reverse()
head_leaves.reverse() head_leaves.reverse()
head = bracket_split_build_line(head_leaves, line) head = bracket_split_build_line(head_leaves, line, opening_bracket)
body = bracket_split_build_line(body_leaves, line, is_body=True) body = bracket_split_build_line(body_leaves, line, opening_bracket, is_body=True)
tail = bracket_split_build_line(tail_leaves, line) tail = bracket_split_build_line(tail_leaves, line, opening_bracket)
body.should_explode = should_explode(body, opening_bracket)
bracket_split_succeeded_or_raise(head, body, tail) bracket_split_succeeded_or_raise(head, body, tail)
if ( if (
# the body shouldn't be exploded # the body shouldn't be exploded
@ -2314,7 +2316,7 @@ def bracket_split_succeeded_or_raise(head: Line, body: Line, tail: Line) -> None
def bracket_split_build_line( def bracket_split_build_line(
leaves: List[Leaf], original: Line, *, is_body: bool = False leaves: List[Leaf], original: Line, opening_bracket: Leaf, *, is_body: bool = False
) -> Line: ) -> Line:
"""Return a new line with given `leaves` and respective comments from `original`. """Return a new line with given `leaves` and respective comments from `original`.
@ -2337,6 +2339,8 @@ def bracket_split_build_line(
result.append(leaf, preformatted=True) result.append(leaf, preformatted=True)
for comment_after in original.comments_after(leaf): for comment_after in original.comments_after(leaf):
result.append(comment_after, preformatted=True) result.append(comment_after, preformatted=True)
if is_body:
result.should_explode = should_explode(result, opening_bracket)
return result return result