|
13 | 13 |
|
14 | 14 |
|
15 | 15 | def update_mask(mask, length): |
16 | | - length_without_cc = len(re.findall(r"[\d.]", re.sub(r"\+\d+\s", "", mask))) |
| 16 | + length_without_cc = re.sub(r"^[^)]+\)\s", "", mask).count(".") |
17 | 17 | if length_without_cc != length: |
18 | | - cc_mask = re.match(r"(\+\d+)\s", mask).group(1) |
19 | | - ac_mask = re.match(r"\+\d+\s(?:(\S+)\s)?", mask).group(1) or "" |
20 | | - ac_mask_length = len(re.findall(r"[\d.]", ac_mask)) |
21 | | - pn_mask_expected_length = length - ac_mask_length |
22 | | - pn_mask_prefix = re.sub(r"\+\d+\s(?:\S+\s)?", "", mask).split()[0] |
| 18 | + cc_mask = re.match(r"(\+[^(]+)\s", mask).group(1) |
| 19 | + ac_mask = re.match(r"\+[^(]+(?:(\S+)\s)?", mask).group(1) or "" |
| 20 | + pn_mask_prefix = re.sub(r"\+[^(]+(?:\S+\s)?", "", mask).split()[0] |
| 21 | + pn_mask_expected_length = length - len(re.findall(r"[\d.]", ac_mask)) - len(re.findall(r"\d", pn_mask_prefix)) |
23 | 22 | pn_mask_parts = [pn_mask_prefix] |
24 | 23 | while len("".join(pn_mask_parts)) < pn_mask_expected_length: |
25 | 24 | pn_mask_parts.append("." * len(pn_mask_prefix)) |
26 | 25 | pn_mask = " ".join(pn_mask_parts) |
27 | | - while len(pn_mask.replace(" ", "")) > pn_mask_expected_length: |
| 26 | + while pn_mask.count(".") > pn_mask_expected_length: |
28 | 27 | pn_mask = pn_mask[:-1] |
29 | 28 | mask = f"{cc_mask} {ac_mask} {pn_mask}" if ac_mask else f"{cc_mask} {pn_mask}" |
30 | | - return re.sub(r"\s(\.)$", r"\1", mask) |
| 29 | + return re.sub(r"\s(\.{1,2})$", r"\1", mask) |
31 | 30 |
|
32 | 31 |
|
33 | 32 | with open(patterns_path) as fp: |
|
0 commit comments