"""Naninovel managed-text dictionary helpers.""" def parse_dictionary(text): result, seen = [], set() for line_number, line in enumerate(text.splitlines(), 1): if not line.strip() or line.lstrip().startswith((";", "#", "//")): continue key, separator, value = line.partition(":") if not separator or not key.strip() or not value.strip(): continue key = key.strip() if key in seen: raise ValueError(f"Duplicate dictionary key at line {line_number}: {key}") seen.add(key) result.append({"id": key, "text": value.lstrip(), "line": line_number}) return result