Fix bug which causes f-expressions to be split (#1809)

Closes #1807.
This commit is contained in:
Bryan Bugyi 2020-11-06 19:17:23 -05:00 committed by GitHub
parent 74e51e6a82
commit edf1c9dc0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 2 deletions

View File

@ -3611,13 +3611,14 @@ class StringSplitter(CustomSplitMapMixin, BaseStringSplitter):
MIN_SUBSTR_SIZE = 6
# Matches an "f-expression" (e.g. {var}) that might be found in an f-string.
RE_FEXPR = r"""
(?<!\{)\{
(?<!\{) (?:\{\{)* \{ (?!\{)
(?:
[^\{\}]
| \{\{
| \}\}
| (?R)
)+?
(?<!\})(?:\}\})*\}(?!\})
(?<!\}) \} (?:\}\})* (?!\})
"""
def do_splitter_match(self, line: Line) -> TMatchResult:

View File

@ -371,6 +371,10 @@ def xxxxxxx_xxxxxx(xxxx):
),
}
# We do NOT split on f-string expressions.
print(f"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. {[f'{i}' for i in range(10)]}")
x = f"This is a long string which contains an f-expr that should not split {{{[i for i in range(5)]}}}."
# output
@ -830,3 +834,13 @@ def xxxxxxx_xxxxxx(xxxx):
r"(?<!([0-9]\ ))(?<=(^|\ ))([A-Z]+(\ )?|[0-9](\ )|[a-z](\\\ )){4,7}([A-Z]|[0-9]|[a-z])($|\b)(?!(\ ?([0-9]\ )|(\.)))"
),
}
# We do NOT split on f-string expressions.
print(
"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam."
f" {[f'{i}' for i in range(10)]}"
)
x = (
"This is a long string which contains an f-expr that should not split"
f" {{{[i for i in range(5)]}}}."
)