Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
parent
e3ccabb23c
commit
7bca930ca3
@ -2889,11 +2889,8 @@ class StringMerger(CustomSplitMapMixin, StringTransformer):
|
|||||||
"""StringTransformer that merges strings together.
|
"""StringTransformer that merges strings together.
|
||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
(A) The line contains adjacent strings such that at most one substring
|
(A) The line contains adjacent strings such that ALL of the validation checks
|
||||||
has inline comments AND none of those inline comments are pragmas AND
|
listed in StringMerger.__validate_msg(...)'s docstring pass.
|
||||||
the set of all substring prefixes is either of length 1 or equal to
|
|
||||||
{"", "f"} AND none of the substrings are raw strings (i.e. are prefixed
|
|
||||||
with 'r').
|
|
||||||
OR
|
OR
|
||||||
(B) The line contains a string which uses line continuation backslashes.
|
(B) The line contains a string which uses line continuation backslashes.
|
||||||
|
|
||||||
@ -3142,6 +3139,7 @@ def __validate_msg(line: Line, string_idx: int) -> TResult[None]:
|
|||||||
* Ok(None), if ALL validation checks (listed below) pass.
|
* Ok(None), if ALL validation checks (listed below) pass.
|
||||||
OR
|
OR
|
||||||
* Err(CannotTransform), if any of the following are true:
|
* Err(CannotTransform), if any of the following are true:
|
||||||
|
- The target string group does not contain ANY stand-alone comments.
|
||||||
- The target string is not in a string group (i.e. it has no
|
- The target string is not in a string group (i.e. it has no
|
||||||
adjacent strings).
|
adjacent strings).
|
||||||
- The string group has more than one inline comment.
|
- The string group has more than one inline comment.
|
||||||
@ -3150,6 +3148,26 @@ def __validate_msg(line: Line, string_idx: int) -> TResult[None]:
|
|||||||
length greater than one and is not equal to {"", "f"}.
|
length greater than one and is not equal to {"", "f"}.
|
||||||
- The string group consists of raw strings.
|
- The string group consists of raw strings.
|
||||||
"""
|
"""
|
||||||
|
# We first check for "inner" stand-alone comments (i.e. stand-alone
|
||||||
|
# comments that have a string leaf before them AND after them).
|
||||||
|
for inc in [1, -1]:
|
||||||
|
i = string_idx
|
||||||
|
found_sa_comment = False
|
||||||
|
is_valid_index = is_valid_index_factory(line.leaves)
|
||||||
|
while is_valid_index(i) and line.leaves[i].type in [
|
||||||
|
token.STRING,
|
||||||
|
STANDALONE_COMMENT,
|
||||||
|
]:
|
||||||
|
if line.leaves[i].type == STANDALONE_COMMENT:
|
||||||
|
found_sa_comment = True
|
||||||
|
elif found_sa_comment:
|
||||||
|
return TErr(
|
||||||
|
"StringMerger does NOT merge string groups which contain "
|
||||||
|
"stand-alone comments."
|
||||||
|
)
|
||||||
|
|
||||||
|
i += inc
|
||||||
|
|
||||||
num_of_inline_string_comments = 0
|
num_of_inline_string_comments = 0
|
||||||
set_of_prefixes = set()
|
set_of_prefixes = set()
|
||||||
num_of_strings = 0
|
num_of_strings = 0
|
||||||
|
@ -310,6 +310,19 @@ def who(self):
|
|||||||
passenger_association=passenger_association,
|
passenger_association=passenger_association,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
xxxxxxx_xxxxxx_xxxxxxx = xxx(
|
||||||
|
[
|
||||||
|
xxxxxxxxxxxx(
|
||||||
|
xxxxxx_xxxxxxx=(
|
||||||
|
'((x.aaaaaaaaa = "xxxxxx.xxxxxxxxxxxxxxxxxxxxx") || (x.xxxxxxxxx = "xxxxxxxxxxxx")) && '
|
||||||
|
# xxxxx xxxxxxxxxxxx xxxx xxx (xxxxxxxxxxxxxxxx) xx x xxxxxxxxx xx xxxxxx.
|
||||||
|
"(x.bbbbbbbbbbbb.xxx != "
|
||||||
|
'"xxx:xxx:xxx::cccccccccccc:xxxxxxx-xxxx/xxxxxxxxxxx/xxxxxxxxxxxxxxxxx") && '
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
for i in range(4, 8):
|
for i in range(4, 8):
|
||||||
cmd = (
|
cmd = (
|
||||||
@ -709,6 +722,20 @@ def who(self):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
xxxxxxx_xxxxxx_xxxxxxx = xxx(
|
||||||
|
[
|
||||||
|
xxxxxxxxxxxx(
|
||||||
|
xxxxxx_xxxxxxx=(
|
||||||
|
'((x.aaaaaaaaa = "xxxxxx.xxxxxxxxxxxxxxxxxxxxx") || (x.xxxxxxxxx ='
|
||||||
|
' "xxxxxxxxxxxx")) && '
|
||||||
|
# xxxxx xxxxxxxxxxxx xxxx xxx (xxxxxxxxxxxxxxxx) xx x xxxxxxxxx xx xxxxxx.
|
||||||
|
"(x.bbbbbbbbbbbb.xxx != "
|
||||||
|
'"xxx:xxx:xxx::cccccccccccc:xxxxxxx-xxxx/xxxxxxxxxxx/xxxxxxxxxxxxxxxxx") && '
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
for i in range(4, 8):
|
for i in range(4, 8):
|
||||||
cmd = (
|
cmd = (
|
||||||
|
Loading…
Reference in New Issue
Block a user