Coverage for src/epublib/nav/page_list_util.py: 79%
29 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-04 08:30 -0300
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-04 08:30 -0300
1from dataclasses import dataclass
3import bs4
5from ..exceptions import warn
6from ..util import parse_int
9def detect_page(tag: bs4.Tag):
10 page = None
11 if tag.string:
12 page = parse_int(tag.string)
13 if page is not None:
14 return page
16 if tag.get("title"):
17 page = parse_int(str(tag["title"]))
18 if page is not None:
19 return page
21 if tag.get("id"):
22 page = parse_int(str(tag["id"]))
23 if page is not None:
24 return page
26 warn(f"Can't determine page number of pagebreak element: {tag}")
27 return None
30@dataclass
31class PageBreakInfo:
32 id: str
33 filename: str
34 page: int
35 label: str = ""
37 def __post_init__(self):
38 if not self.label:
39 self.label = str(self.page)