""" Cross-reference system for linking related Bible verses. Organized by major theological themes and narrative connections. """ import json from pathlib import Path # Load cross-references from JSON data file _data_path = Path(__file__).parent / "data" / "cross_references.json" with open(_data_path, "r", encoding="utf-8") as f: CROSS_REFERENCES = json.load(f) def get_cross_references(book: str, chapter: int, verse: int) -> list: """ Get cross-references for a specific verse with verse text for tooltips. Args: book: Book name (e.g., "Genesis", "John") chapter: Chapter number verse: Verse number Returns: List of cross-reference dictionaries with 'ref', 'note', and 'text' keys """ from .kjv import bible key = f"{book}:{chapter}:{verse}" refs = CROSS_REFERENCES.get(key, []) # Enhance each reference with the actual verse text enhanced_refs = [] for ref in refs: enhanced_ref = ref.copy() # Parse the reference to get the verse text ref_str = ref['ref'] parts = ref_str.rsplit(' ', 1) if len(parts) == 2: ref_book = parts[0] chapter_verse = parts[1] if ':' in chapter_verse: ref_chapter, ref_verse = chapter_verse.split(':') ref_chapter = int(ref_chapter) ref_verse = int(ref_verse) # Get the verse text using the bible object try: verse_text = bible.get_verse_text(ref_book, ref_chapter, ref_verse) enhanced_ref['text'] = verse_text if verse_text else "" except Exception: enhanced_ref['text'] = "" else: enhanced_ref['text'] = "" else: enhanced_ref['text'] = "" enhanced_refs.append(enhanced_ref) return enhanced_refs def parse_reference(ref: str) -> dict: """ Parse a reference string like "Genesis 1:1" into components. Args: ref: Reference string Returns: Dictionary with 'book', 'chapter', 'verse' keys """ parts = ref.rsplit(' ', 1) if len(parts) != 2: return None book = parts[0] chapter_verse = parts[1].split(':') if len(chapter_verse) != 2: return None try: return { 'book': book, 'chapter': int(chapter_verse[0]), 'verse': int(chapter_verse[1]) } except ValueError: return None