def process_qotd_arguments(args: argparse.Namespace): bible = pybible_load.load(args.bible) book = random.choice(bible) chapter = random.choice(book.chapters) verse = random.choice(chapter.verses) yield Reference(verse.text, book.title, chapter.number, verse.number, bible.name)
def process_nt_arguments(args: argparse.Namespace): bible = pybible_load.load(args.bible) if args.size: yield f"The New Testament has {len(bible.nt())} books" else: for reference in (Reference(verse.text, book.title, chapter.number, verse.number, bible.name) for book in bible.nt() for chapter in book.chapters for verse in chapter.verses): yield reference
def process_book_arguments(args: argparse.Namespace): bible = pybible_load.load(args.bible, args.book) book = bible[0] if args.size: yield f"{book.title} has {len(book)} chapters" else: for reference in (Reference(verse.text, book.title, chapter.number, verse.number, bible.name) for chapter in book.chapters for verse in chapter.verses): yield reference
def process_verse_arguments(args: argparse.Namespace): bible = pybible_load.load(args.bible, args.verse[0]) book = bible[0] chapter = book[cast_integer_argument(parser, args.verse[1], "--verse", "CHAPTER_NUMBER")] verse = chapter[cast_integer_argument(parser, args.verse[2], "--verse", "VERSE_NUMBER")] if args.size: yield f"Verse {verse.number} of Chapter {chapter.number} " \ f"of {book.title} has {len(verse)} characters" else: yield Reference(verse.text, book.title, chapter.number, verse.number, bible.name)
def process_chapter_arguments(args: argparse.Namespace): bible = pybible_load.load(args.bible, args.chapter[0]) book = bible[0] chapter = book[cast_integer_argument(parser, args.chapter[1], "--chapter", "CHAPTER_NUMBER")] if args.size: yield f"Chapter {chapter.number} of {book.title} " \ f"has {len(chapter)} verses" else: for reference in (Reference(verse.text, book.title, chapter.number, verse.number, bible.name) for verse in chapter.verses): yield reference
def process_arguments(parser: argparse.ArgumentParser): args = parser.parse_args() bible_arg = args.bible bible = pybible_load.load(bible_arg) if args.old_testament: if args.size: return f"The old testament has {len(bible.ot())} books" else: references = [ Reference(verse.text, book.title, chapter.number, verse.number) for book in bible.ot() for chapter in book.chapters for verse in chapter.verses ] elif args.new_testament: if args.size: return f"The new testament has {len(bible.nt())} books" else: references = [ Reference(verse.text, book.title, chapter.number, verse.number) for book in bible.nt() for chapter in book.chapters for verse in chapter.verses ] elif args.book: book = bible[args.book] if args.size: return f"{book.title} has {len(book)} chapters" else: references = [ Reference(verse.text, book.title, chapter.number, verse.number) for chapter in book.chapters for verse in chapter.verses ] elif args.chapter: book = bible[args.chapter[0]] chapter = book[cast_integer_argument(parser, args.chapter[1], "--chapter", "CHAPTER_NUMBER")] if args.size: return f"Chapter {chapter.number} of {book.title} has {len(chapter)} verses" else: references = [ Reference(verse.text, book.title, chapter.number, verse.number) for verse in chapter.verses ] elif args.verse: book = bible[args.verse[0]] chapter = book[cast_integer_argument(parser, args.verse[1], "--verse", "CHAPTER_NUMBER")] verse = chapter[cast_integer_argument(parser, args.verse[2], "--verse", "VERSE_NUMBER")] if args.size: return f"Verse {verse.number} of Chapter {chapter.number} of {book.title} has {len(verse)} characters" else: references = [ Reference(verse.text, book.title, chapter.number, verse.number) ] else: if args.size: return f"{bible.name} has {len(bible)} books" else: references = [ Reference(verse.text, book.title, chapter.number, verse.number) for book in bible.books for chapter in book.chapters for verse in chapter.verses ] if args.reference: return [ f"{reference.verse_text} - {reference.book_title} {reference.chapter_number}:{reference.verse_number}" for reference in references ] else: return [f"{reference.verse_text}" for reference in references]
def book(): return pybible_load.load()[constants.BOOK_KEY_TEST]
def verse(): return pybible_load.load()[constants.BOOK_KEY_TEST][constants.POS_TEST][ constants.POS_TEST]
def bible(): return pybible_load.load()
def test_load(): bible = pybible_load.load(constants.BIBLE_NAME_ARG_TEST) assert isinstance(bible, Bible)
def test_load_fail(): with pytest.raises(SystemExit): bible = pybible_load.load(constants.BIBLE_NAME_ARG_TEST_ERROR) assert isinstance(bible, Bible)
def chapter(): return pybible_load.load()[constants.BOOK_KEY_TEST][constants.POS_TEST]
def verse(): book = pybible_load.load()[constants.BOOK_KEY_TEST] return book[constants.POS_TEST][constants.POS_TEST]