diff --git a/axon/services/citations.py b/axon/services/citations.py new file mode 100644 index 0000000..05c94e8 --- /dev/null +++ b/axon/services/citations.py @@ -0,0 +1,11 @@ +import re + +from axon.models import SearchResult + +_CITATION_RE = re.compile(r"\[(\d+)\]") + + +def validate_citations(report: str, sources: list[SearchResult]) -> tuple[int, list[int], bool]: + citations = sorted({int(match) for match in _CITATION_RE.findall(report)}) + missing = [citation for citation in citations if citation < 1 or citation > len(sources)] + return len(citations), missing, not missing and bool(citations)