Files
kjvstudy.org/kjvstudy_org/cross_references.py
kennethreitz 105df4a18e Move embedded Python data to JSON files
- Move data from Python modules to JSON in data/ directory:
  - verse_collections.json, topics.json, biographies.json
  - cross_references.json, reading_plans.json, resources.json
- Update Python modules to load from JSON at import
- Remove intermediary Python data files from data/
- Move stories.py loader to main module directory
- Add Heroes of Faith Bible stories (Job, Ruth, Esther, Jonah, Daniel, Shadrach/Meshach/Abednego)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 10:30:31 -05:00

92 lines
2.5 KiB
Python

"""
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