epub-generator 0.0.1__tar.gz → 0.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: epub-generator
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: Tao Zeyu
@@ -11,8 +11,8 @@ from .context import Template
11
11
  @dataclass
12
12
  class NavPoint:
13
13
  index_id: int
14
- order: int
15
14
  file_name: str
15
+ order: int
16
16
 
17
17
  def gen_index(
18
18
  template: Template,
@@ -41,8 +41,7 @@ def gen_index(
41
41
  for chapters_list in (prefaces, chapters):
42
42
  for chapter in chapters_list:
43
43
  element = nav_point_generation.generate(chapter)
44
- if element is not None:
45
- nav_elements.append(element)
44
+ nav_elements.append(element)
46
45
 
47
46
  depth = max(
48
47
  _max_depth(prefaces),
@@ -91,17 +90,34 @@ class _NavPointGeneration:
91
90
  def nav_points(self) -> list[NavPoint]:
92
91
  return self._nav_points
93
92
 
94
- def generate(self, chapter: _Chapter) -> Element | None:
95
- if not self._check_chapter_exits(chapter.id):
96
- return None
97
-
98
- part_id = str(chapter.id).zfill(self._digits)
99
- file_name = f"part{part_id}.xhtml"
100
- order = self._next_order
93
+ def generate(self, chapter: _Chapter) -> Element:
94
+ _, nav_point_xml = self._create_nav_point(chapter)
95
+ return nav_point_xml
96
+
97
+ def _create_nav_point(self, chapter: _Chapter) -> tuple[NavPoint, Element]:
98
+ nav_point: NavPoint | None = None
99
+ if self._check_chapter_exits(chapter.id):
100
+ part_id = str(chapter.id).zfill(self._digits)
101
+ nav_point = NavPoint(
102
+ index_id=chapter.id,
103
+ file_name=f"part{part_id}.xhtml",
104
+ order=self._next_order,
105
+ )
106
+ self._nav_points.append(nav_point)
107
+ self._next_order += 1
101
108
 
102
109
  nav_point_xml = Element("navPoint")
110
+ for child in chapter.children:
111
+ child, child_xml = self._create_nav_point(child)
112
+ if child_xml is not None:
113
+ nav_point_xml.append(child_xml)
114
+ if nav_point is None:
115
+ nav_point = child
116
+
117
+ assert nav_point is not None, "Nav does not have any valid chapters"
118
+
103
119
  nav_point_xml.set("id", f"np_{chapter.id}")
104
- nav_point_xml.set("playOrder", str(order))
120
+ nav_point_xml.set("playOrder", str(nav_point.order))
105
121
 
106
122
  label_xml = Element("navLabel")
107
123
  label_text_xml = Element("text")
@@ -109,23 +125,12 @@ class _NavPointGeneration:
109
125
  label_xml.append(label_text_xml)
110
126
 
111
127
  content_xml = Element("content")
112
- content_xml.set("src", f"Text/{file_name}")
128
+ content_xml.set("src", f"Text/{nav_point.file_name}")
113
129
 
114
- nav_point_xml.append(label_xml)
115
- nav_point_xml.append(content_xml)
130
+ nav_point_xml.insert(0, label_xml)
131
+ nav_point_xml.insert(1, content_xml)
116
132
 
117
- self._next_order += 1
118
- self._nav_points.append(NavPoint(
119
- index_id=chapter.id,
120
- order=order,
121
- file_name=file_name,
122
- ))
123
- for child in chapter.children:
124
- child_xml = self.generate(child)
125
- if child_xml is not None:
126
- nav_point_xml.append(child_xml)
127
-
128
- return nav_point_xml
133
+ return nav_point, nav_point_xml
129
134
 
130
135
  @dataclass
131
136
  class _Chapter:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "epub-generator"
3
- version = "0.0.1"
3
+ version = "0.0.2"
4
4
  description = ""
5
5
  authors = [
6
6
  {name = "Tao Zeyu",email = "i@taozeyu.com"}
File without changes
File without changes