Speaker: stort begyndelsesbogstav, også når replikken starter med et svar
CI / test (push) Successful in 16s
CI / test (push) Successful in 16s
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
This commit is contained in:
+8
-2
@@ -48,8 +48,14 @@ def safe(text: str) -> str:
|
||||
return re.sub(r"[\[\]{}<>]", "", str(text)).strip()
|
||||
|
||||
|
||||
def capitalize(line: str) -> str:
|
||||
"""Stort begyndelsesbogstav, også når replikken starter med et indsat svar ("kongevand, det er …")."""
|
||||
m = re.match(r"^((?:\[[a-z ]+\]\s*)*)(\w)", line)
|
||||
return line if not m else line[:m.start(2)] + m.group(2).upper() + line[m.end(2):]
|
||||
|
||||
|
||||
def speakable_prompt(prompt: str) -> str:
|
||||
return re.sub(r"_{3,}", "blank", prompt)
|
||||
return capitalize(re.sub(r"_{3,}", "blank", prompt))
|
||||
|
||||
|
||||
class Narrator:
|
||||
@@ -67,7 +73,7 @@ class Narrator:
|
||||
recent.append(i)
|
||||
del recent[:-max(1, len(variants) // 2)] # undgå gentagelser i den seneste halvdel
|
||||
filled = {k: (number_words(v) if isinstance(v, int) else safe(v)) for k, v in values.items()}
|
||||
return re.sub(r"\{(\w+)\}", lambda m: filled.get(m.group(1), ""), variants[i])
|
||||
return capitalize(re.sub(r"\{(\w+)\}", lambda m: filled.get(m.group(1), ""), variants[i]))
|
||||
|
||||
# ── afsløringen ──────────────────────────────────────────────────────────
|
||||
def reveal_step(self, step: dict, names: dict[str, str], n_players: int) -> str | None:
|
||||
|
||||
@@ -26,6 +26,11 @@ class NarratorTests(SimpleTestCase):
|
||||
self.assertEqual(join_names(["A", "B", "C"]), "A, B og C")
|
||||
self.assertEqual(safe("Bo[laughs]"), "Bolaughs")
|
||||
self.assertEqual(speakable_prompt("En flok _____ kaldes."), "En flok blank kaldes.")
|
||||
self.assertEqual(speakable_prompt("_____ kan ikke mærke chili."), "Blank kan ikke mærke chili.")
|
||||
n = Narrator(random.Random(0))
|
||||
for _ in range(10):
|
||||
line = n.line("reveal_truth_found", sandhed="kongevand", navne="Sus")
|
||||
self.assertRegex(line, r"^(\[[a-z ]+\] )*[A-ZÆØÅ]")
|
||||
|
||||
def test_lines_are_filled_and_vary(self):
|
||||
n = Narrator(random.Random(1))
|
||||
|
||||
Reference in New Issue
Block a user