Files
bookstorm/src/book.py
2025-10-04 02:55:01 -04:00

67 lines
1.6 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Book Data Structures
Common book and chapter classes used by all parsers.
"""
class Book:
"""Represents a parsed book with navigation and content"""
def __init__(self, title="Untitled", author="Unknown"):
"""
Initialize book
Args:
title: Book title
author: Book author
"""
self.title = title
self.author = author
self.chapters = [] # List of Chapter objects
def add_chapter(self, chapter):
"""Add a chapter to the book"""
self.chapters.append(chapter)
def get_chapter(self, index):
"""Get chapter by index"""
if 0 <= index < len(self.chapters):
return self.chapters[index]
return None
def get_total_chapters(self):
"""Get total number of chapters"""
return len(self.chapters)
class Chapter:
"""Represents a single chapter with paragraphs"""
def __init__(self, title="Untitled"):
"""
Initialize chapter
Args:
title: Chapter title
"""
self.title = title
self.paragraphs = [] # List of paragraph strings
def add_paragraph(self, text):
"""Add a paragraph to the chapter"""
if text and text.strip():
self.paragraphs.append(text.strip())
def get_paragraph(self, index):
"""Get paragraph by index"""
if 0 <= index < len(self.paragraphs):
return self.paragraphs[index]
return None
def get_total_paragraphs(self):
"""Get total number of paragraphs"""
return len(self.paragraphs)