Skip to content

Commit d44ac3a

Browse files
Allow for a non '-' seperator
1 parent 8e238ef commit d44ac3a

4 files changed

Lines changed: 14 additions & 5 deletions

File tree

perdoo/metadata/_base.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import re
55
from collections.abc import Callable
66
from pathlib import Path
7+
from typing import Literal
78

89
from pydantic.alias_generators import to_pascal
910
from pydantic_xml import BaseXmlModel
@@ -20,13 +21,13 @@
2021
LOGGER = logging.getLogger(__name__)
2122

2223

23-
def sanitize(value: str | None) -> str | None:
24+
def sanitize(value: str | None, seperator: Literal["-", "_", ".", " "]) -> str | None:
2425
if not value:
2526
return value
2627
value = str(value)
27-
value = re.sub(r"[^0-9a-zA-Z&! ]+", "", value.replace("-", " "))
28+
value = re.sub(r"[^0-9a-zA-Z&! ]+", "", value.replace(seperator, " "))
2829
value = " ".join(value.split())
29-
return value.replace(" ", "-")
30+
return value.replace(" ", seperator)
3031

3132

3233
class PascalModel(
@@ -61,7 +62,12 @@ def display(self) -> None:
6162

6263
CONSOLE.print(Panel.fit("\n".join(content_vals), title=type(self).__name__))
6364

64-
def evaluate_pattern(self, pattern_map: dict[str, Callable[[Self], str]], pattern: str) -> str:
65+
def evaluate_pattern(
66+
self,
67+
pattern_map: dict[str, Callable[[Self], str]],
68+
pattern: str,
69+
seperator: Literal["-", "_", ".", " "],
70+
) -> str:
6571
def replace_match(match: re.Match) -> str:
6672
key = match.group("key")
6773
padding = match.group("padding")
@@ -73,7 +79,7 @@ def replace_match(match: re.Match) -> str:
7379

7480
if padding and (isinstance(value, int) or (isinstance(value, str) and value.isdigit())):
7581
return f"{int(value):0{padding}}"
76-
return sanitize(value=value) or ""
82+
return sanitize(value=value, seperator=seperator) or ""
7783

7884
pattern_regex = re.compile(r"{(?P<key>[a-zA-Z-]+)(?::(?P<padding>\d+))?}")
7985
return pattern_regex.sub(replace_match, pattern)

perdoo/metadata/comic_info.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ def get_filename(self, settings: Naming) -> str:
322322
Format.SINGLE_ISSUE.value: settings.single_issue or settings.default,
323323
Format.TRADE_PAPERBACK.value: settings.trade_paperback or settings.default,
324324
}.get(self.format, settings.default),
325+
seperator=settings.seperator,
325326
)
326327

327328

perdoo/metadata/metron_info.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ def get_filename(self, settings: Naming) -> str:
386386
Format.SINGLE_ISSUE: settings.single_issue or settings.default,
387387
Format.TRADE_PAPERBACK: settings.trade_paperback or settings.default,
388388
}.get(self.series.format, settings.default),
389+
seperator=settings.seperator,
389390
)
390391

391392

perdoo/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class MetronInfo(SettingsModel):
4747

4848

4949
class Naming(SettingsModel):
50+
seperator: Literal["-", "_", ".", " "] = "-"
5051
default: str = "{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_#{number:3}"
5152
annual: Annotated[str | None, BeforeValidator(blank_is_none)] = (
5253
"{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_Annual_#{number:2}"

0 commit comments

Comments
 (0)