core.logic.verse_logic
- File:
EuljiroBible/core/logic/verse_logic.py
- Author:
Benjamin Jaedon Choi - https://github.com/saintbenjamin
- Affiliated Church:
The Eulji-ro Presbyterian Church [대한예수교장로회(통합) 을지로교회]
- Address:
The Eulji-ro Presbyterian Church, 24-10, Eulji-ro 20-gil, Jung-gu, Seoul 04549, South Korea
- Telephone:
+82-2-2266-3070
- E-mail:
euljirochurch [at] G.M.A.I.L. (replace [at] with @ and G.M.A.I.L as you understood.)
- License:
MIT License with Attribution Requirement (see LICENSE file for details); Copyright (c) 2025 The Eulji-ro Presbyterian Church.
Provides core logic for verse reference parsing, formatting, and display.
This module is shared across GUI and CLI contexts. It encapsulates how verse ranges, version compatibility, and formatting rules are handled throughout EuljiroBible.
- core.logic.verse_logic.parse_verse_range(verse_text, version, book, chapter, bible_data)[source]
Parses a verse input string and returns a
(start, end)tuple.Supports formats like “1”, “3-5”, or blank input (interpreted as full chapter).
- Parameters:
verse_text (str) – Raw input like
"1","4-6", or"".version (str) – Bible version key.
book (str) – Internal book name key.
chapter (int) – Chapter number.
bible_data (BibleDataLoader) – Loader instance to resolve verse limits.
- Returns:
(start_verse, end_verse)
- Return type:
Tuple[int, int]
- Raises:
ValueError – If the format is invalid or range is reversed.
- core.logic.verse_logic.shift_verse_value(current_verse, delta, max_verse)[source]
Computes a new verse number by applying delta with bounds.
- Parameters:
current_verse (int) – Current verse number.
delta (int) –
+1,-1, etc.max_verse (int) – Maximum valid verse in chapter.
- Returns:
Adjusted verse number within valid range.
- Return type:
int
- core.logic.verse_logic.resolve_reference(version_list, book_str, chapter_str, verse_str, bible_data, lang_code)[source]
Resolves raw user input strings into normalized reference values.
- Parameters:
version_list (list) – List of Bible version keys.
book_str (str) – Raw book name (e.g., “요한복음”).
chapter_str (str) – Raw chapter string (e.g., “3”).
verse_str (str) – Raw verse string (e.g., “16-18”).
bible_data (BibleDataLoader) – Data loader instance.
lang_code (str) – Language for book normalization.
- Returns:
(versions, book_key, chapter:int, verse_range:(int,int))
- Return type:
tuple
- Raises:
ValueError – If input is invalid.
- core.logic.verse_logic.get_common_books_among_versions(versions, get_verses_func, bible_data=None)[source]
Returns list of books that are common to all selected versions.
Canonical order is preserved if available.
- Parameters:
versions (list) – List of Bible versions.
get_verses_func (function) – Callable like bible_data.get_verses.
bible_data (BibleDataLoader) – For canonical book order.
- Returns:
List of book keys common to all versions.
- Return type:
List[str]
- core.logic.verse_logic.validate_versions_and_books(versions, bible_data=None)[source]
Checks whether the versions are valid and share common books.
- Parameters:
versions (list) – List of selected versions.
bible_data (BibleDataLoader) – Data source.
- Returns:
(validated_versions, common_books) or (None, None)
- Return type:
tuple
- core.logic.verse_logic.display_verse_logic(ref_func, output_target, bible_data, tr, settings, lang_code='ko', output_func=None, version_alias=None, book_alias=None, is_cli=False)[source]
Central function that handles fetching and displaying a verse block.
- Parameters:
ref_func (callable) – Function returning (versions, book, chapter, verse_range).
output_target (QTextEdit or None) – GUI output box (if applicable).
bible_data (BibleDataLoader) – Loaded Bible data.
tr (function) – Translation function.
settings (dict) – User settings.
lang_code (str) – Language code.
output_func (callable) – Optional stdout printer for CLI.
version_alias (dict) – Display-friendly version names.
book_alias (dict) – Display-friendly book names.
is_cli (bool) – True if running in CLI mode.
- Returns:
Output string or error message printed.
- Return type:
str | None