fix(schema): drop leading separator when series or volume is missing
This commit is contained in:
@@ -46,3 +46,16 @@ def test_series_level_kept_when_set():
|
||||
r.narrator = "Rufus Beck"
|
||||
assert render_template("{Author}/{Series}/{Title} ({Narrator})", r) == \
|
||||
"J.K. Rowling/Harry Potter/Harry Potter und der Feuerkelch (Rufus Beck)"
|
||||
|
||||
|
||||
def test_missing_values_do_not_leave_dangling_separators():
|
||||
"""A "{Series}/{Volume} - {Title}" library still has standalone titles."""
|
||||
req = SimpleNamespace(title="Ein Einzeltitel", authors="Jemand", series="",
|
||||
volume=None, year=None, narrator="")
|
||||
assert render_template("{Series}/{Volume} - {Title}", req) == "Ein Einzeltitel"
|
||||
assert render_template("{Volume} - {Title} ({Year})", req) == "Ein Einzeltitel"
|
||||
|
||||
numbered = SimpleNamespace(title="Die Höllenbrut", authors="A. F. Morland",
|
||||
series="Tony Ballard", volume=1, year=2020, narrator="")
|
||||
assert render_template("{Series}/{Volume} - {Title}", numbered) == \
|
||||
"Tony Ballard/01 - Die Höllenbrut"
|
||||
|
||||
+2
-1
@@ -29,7 +29,8 @@ def render_template(template: str, request) -> str:
|
||||
seg = seg.replace("{" + key + "}", val)
|
||||
# drop empty parenthesized/dangling bits from missing values, e.g. "Title ()"
|
||||
seg = re.sub(r"\(\s*\)", "", seg)
|
||||
seg = re.sub(r"(-|–)\s*$", "", seg).strip()
|
||||
seg = re.sub(r"(-|–)\s*$", "", seg)
|
||||
seg = re.sub(r"^\s*(-|–|·)\s*", "", seg).strip()
|
||||
if not seg:
|
||||
continue # drop path levels that are empty (e.g. {Series} without a series)
|
||||
segments.append(sanitize(seg))
|
||||
|
||||
Reference in New Issue
Block a user