from __future__ import annotations from typing import Any def parse_cite(reference: dict[str, Any]) -> dict[str, str] | None: cite_type = reference.get("cite") if not cite_type: return None match cite_type: case "chan": return { "type": "chan", "group": reference.get("group", ""), "chan": reference.get("chan", ""), } case "group": return { "type": "group", "group": reference.get("group", ""), } case "desk": return { "type": "desk", "desk": reference.get("desk", ""), } case "bait": return { "type": "bait", "bait": reference.get("bait", ""), } case _: return None def cite_to_text(cite: dict[str, str]) -> str: match cite.get("type"): case "chan": return f"[channel: {cite.get('group')}/{cite.get('chan')}]" case "group": return f"[group: {cite.get('group')}]" case "desk": return f"[desk: {cite.get('desk')}]" case "bait": return f"[bait: {cite.get('bait')}]" case _: return "[unknown reference]"