mirror of
https://github.com/TECHNOFAB11/bumpver.git
synced 2025-12-12 14:30:09 +01:00
fix #190 - Enable multiple patterns on one line
This commit is contained in:
parent
b2c5652332
commit
7d56d7b582
2 changed files with 14 additions and 4 deletions
|
|
@ -296,11 +296,21 @@ def _replace_pattern_parts(pattern: str) -> str:
|
||||||
PostitionedPart = typ.Tuple[int, int, str]
|
PostitionedPart = typ.Tuple[int, int, str]
|
||||||
part_patterns_by_index: typ.Dict[SortKey, PostitionedPart] = {}
|
part_patterns_by_index: typ.Dict[SortKey, PostitionedPart] = {}
|
||||||
|
|
||||||
|
used_fields = set()
|
||||||
for part_name, part_pattern in PART_PATTERNS.items():
|
for part_name, part_pattern in PART_PATTERNS.items():
|
||||||
start_idx = pattern.find(part_name)
|
end_idx = 0
|
||||||
if start_idx >= 0:
|
while True:
|
||||||
|
start_idx = pattern.find(part_name, end_idx)
|
||||||
|
if start_idx < 0:
|
||||||
|
break
|
||||||
|
|
||||||
field = PATTERN_PART_FIELDS[part_name]
|
field = PATTERN_PART_FIELDS[part_name]
|
||||||
named_part_pattern = f"(?P<{field}>{part_pattern})"
|
if field in used_fields:
|
||||||
|
named_part_pattern = f"(?P<{field}_{len(used_fields)}>{part_pattern})"
|
||||||
|
else:
|
||||||
|
named_part_pattern = f"(?P<{field}>{part_pattern})"
|
||||||
|
used_fields.add(field)
|
||||||
|
|
||||||
end_idx = start_idx + len(part_name)
|
end_idx = start_idx + len(part_name)
|
||||||
sort_key = (-end_idx, -len(part_name))
|
sort_key = (-end_idx, -len(part_name))
|
||||||
part_patterns_by_index[sort_key] = (start_idx, end_idx, named_part_pattern)
|
part_patterns_by_index[sort_key] = (start_idx, end_idx, named_part_pattern)
|
||||||
|
|
|
||||||
|
|
@ -215,7 +215,7 @@ def parse_field_values_to_vinfo(field_values: FieldValues) -> version.V2VersionI
|
||||||
"""
|
"""
|
||||||
# pylint:disable=dangerous-default-value; We don't mutate args, mypy would fail if we did.
|
# pylint:disable=dangerous-default-value; We don't mutate args, mypy would fail if we did.
|
||||||
for key in field_values:
|
for key in field_values:
|
||||||
assert key in VALID_FIELD_KEYS, key
|
assert any(key.startswith(fkey) for fkey in VALID_FIELD_KEYS), key
|
||||||
|
|
||||||
cinfo = parse_field_values_to_cinfo(field_values)
|
cinfo = parse_field_values_to_cinfo(field_values)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue