txt2ebook 0.1.161__tar.gz → 0.1.162__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.
Files changed (51) hide show
  1. {txt2ebook-0.1.161/src/txt2ebook.egg-info → txt2ebook-0.1.162}/PKG-INFO +1 -1
  2. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/pyproject.toml +1 -1
  3. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/cli.py +9 -0
  4. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/base.py +7 -5
  5. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/txt.py +13 -110
  6. {txt2ebook-0.1.161 → txt2ebook-0.1.162/src/txt2ebook.egg-info}/PKG-INFO +1 -1
  7. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/LICENSE.md +0 -0
  8. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/README.md +0 -0
  9. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/setup.cfg +0 -0
  10. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/__init__.py +0 -0
  11. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/__main__.py +0 -0
  12. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/exceptions.py +0 -0
  13. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/__init__.py +0 -0
  14. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/epub.py +0 -0
  15. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/gmi.py +0 -0
  16. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/md.py +0 -0
  17. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/pdf.py +0 -0
  18. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/templates/__init__.py +0 -0
  19. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/templates/epub/__init__.py +0 -0
  20. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/tex.py +0 -0
  21. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/formats/typ.py +0 -0
  22. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/helpers/__init__.py +0 -0
  23. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/languages/__init__.py +0 -0
  24. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/languages/en.py +0 -0
  25. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/languages/zh_cn.py +0 -0
  26. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/languages/zh_tw.py +0 -0
  27. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/models/__init__.py +0 -0
  28. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/models/book.py +0 -0
  29. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/models/chapter.py +0 -0
  30. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/models/volume.py +0 -0
  31. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/parser.py +0 -0
  32. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/__init__.py +0 -0
  33. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/env.py +0 -0
  34. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/epub.py +0 -0
  35. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/gmi.py +0 -0
  36. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/massage.py +0 -0
  37. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/md.py +0 -0
  38. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/parse.py +0 -0
  39. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/pdf.py +0 -0
  40. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/tex.py +0 -0
  41. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/subcommands/typ.py +0 -0
  42. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/tokenizer.py +0 -0
  43. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook/zh_utils.py +0 -0
  44. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook.egg-info/SOURCES.txt +0 -0
  45. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook.egg-info/dependency_links.txt +0 -0
  46. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook.egg-info/entry_points.txt +0 -0
  47. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook.egg-info/requires.txt +0 -0
  48. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/src/txt2ebook.egg-info/top_level.txt +0 -0
  49. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/tests/test_parser.py +0 -0
  50. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/tests/test_tokenizer.py +0 -0
  51. {txt2ebook-0.1.161 → txt2ebook-0.1.162}/tests/test_txt2ebook.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: txt2ebook
3
- Version: 0.1.161
3
+ Version: 0.1.162
4
4
  Summary: CLI tool to convert txt file to ebook format
5
5
  Author-email: Kian-Meng Ang <kianmeng@cpan.org>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "txt2ebook"
3
- version = "0.1.161"
3
+ version = "0.1.162"
4
4
  description = "CLI tool to convert txt file to ebook format"
5
5
  authors = [{ name = "Kian-Meng Ang", email = "kianmeng@cpan.org" }]
6
6
  requires-python = ">=3.10"
@@ -71,6 +71,15 @@ def build_parser() -> argparse.ArgumentParser:
71
71
  ),
72
72
  )
73
73
 
74
+ parser.add_argument(
75
+ "-y",
76
+ "--yes",
77
+ default=False,
78
+ action="store_true",
79
+ dest="yes",
80
+ help="assume yes to all prompts (default: '%(default)s')",
81
+ )
82
+
74
83
  parser.add_argument(
75
84
  "-l",
76
85
  "--language",
@@ -150,18 +150,18 @@ class BaseWriter(ABC):
150
150
  def _get_file_extension_for_split(self) -> str:
151
151
  raise NotImplementedError
152
152
 
153
- def _export_multiple_files(self) -> None:
153
+ def _export_multiple_files(self) -> Path:
154
154
  logger.info("Split multiple files")
155
155
 
156
156
  extension = self._get_file_extension_for_split()
157
157
  txt_filename = Path(self.config.input_file.name)
158
158
 
159
- export_filename = self._get_metadata_filename_for_split(
159
+ metadata_filename = self._get_metadata_filename_for_split(
160
160
  txt_filename, extension
161
161
  )
162
- export_filename.parent.mkdir(parents=True, exist_ok=True)
163
- logger.info("Creating %s", export_filename)
164
- with open(export_filename, "w", encoding="utf8") as file:
162
+ metadata_filename.parent.mkdir(parents=True, exist_ok=True)
163
+ logger.info("Creating %s", metadata_filename)
164
+ with open(metadata_filename, "w", encoding="utf8") as file:
165
165
  file.write(self._to_metadata_txt())
166
166
 
167
167
  sc_seq = 1
@@ -213,6 +213,8 @@ class BaseWriter(ABC):
213
213
 
214
214
  sc_seq = sc_seq + 1
215
215
 
216
+ return metadata_filename
217
+
216
218
  def _get_metadata_filename_for_split(
217
219
  self, txt_filename: Path, extension: str
218
220
  ) -> Path:
@@ -39,7 +39,9 @@ class TxtWriter(BaseWriter):
39
39
  if self.config.input_file.name == "<stdin>":
40
40
  logger.info("Skip backup source text file as content from stdin")
41
41
  elif self.config.split_volume_and_chapter:
42
- self._export_multiple_files()
42
+ metadata_filename = self._export_multiple_files()
43
+ if self.config.open:
44
+ self._open_file(metadata_filename)
43
45
  else:
44
46
  output_filename = self._output_filename(".txt")
45
47
  output_filename.parent.mkdir(parents=True, exist_ok=True)
@@ -72,118 +74,19 @@ class TxtWriter(BaseWriter):
72
74
  if self.config.open:
73
75
  self._open_file(output_filename)
74
76
 
75
- def _get_metadata_filename_for_split(
76
- self, txt_filename: Path, extension: str
77
- ) -> Path:
78
- return Path(
79
- txt_filename.resolve().parent.joinpath(
80
- self.config.output_folder,
81
- f"00_{txt_filename.stem}_" + self._("metadata") + extension,
82
- )
83
- )
84
-
85
- def _get_toc_filename_for_split(
86
- self, txt_filename: Path, extension: str
87
- ) -> Path:
88
- return Path(
89
- txt_filename.resolve().parent.joinpath(
90
- self.config.output_folder,
91
- f"01_{txt_filename.stem}_" + self._("toc") + extension,
92
- )
93
- )
77
+ def _get_toc_content_for_split(self) -> str:
78
+ return self._to_toc("-")
94
79
 
95
- def _get_volume_chapter_filename_for_split(
96
- self,
97
- txt_filename: Path,
98
- section_seq: str,
99
- chapter_seq: str,
100
- volume: Volume,
101
- chapter: Chapter,
102
- extension: str,
103
- ) -> Path:
104
- return Path(
105
- txt_filename.resolve().parent.joinpath(
106
- self.config.output_folder,
107
- (
108
- f"{section_seq}"
109
- f"_{chapter_seq}"
110
- f"_{txt_filename.stem}"
111
- f"_{volume.title}"
112
- f"_{chapter.title}"
113
- f"{extension}"
114
- ),
115
- )
116
- )
117
-
118
- def _get_chapter_filename_for_split(
119
- self,
120
- txt_filename: Path,
121
- section_seq: str,
122
- chapter: Chapter,
123
- extension: str,
124
- ) -> Path:
125
- return Path(
126
- txt_filename.resolve().parent.joinpath(
127
- self.config.output_folder,
128
- (
129
- f"{section_seq}_{txt_filename.stem}_{chapter.title}{extension}"
130
- ),
131
- )
132
- )
80
+ def _get_volume_chapter_content_for_split(
81
+ self, volume: Volume, chapter: Chapter
82
+ ) -> str:
83
+ return self._to_volume_chapter_txt(volume, chapter)
133
84
 
134
- def _export_multiple_files(self) -> None:
135
- """Export multiple files based on volume and chapter."""
136
- txt_filename = Path(self.config.input_file.name)
137
- txt_filename.parent.joinpath(self.config.output_folder).mkdir(
138
- parents=True, exist_ok=True
139
- )
140
-
141
- # 1. Write metadata file
142
- metadata_filename = self._get_metadata_filename_for_split(
143
- txt_filename, ".txt"
144
- )
145
- with open(metadata_filename, "w", encoding="utf8") as file:
146
- logger.info("Creating %s", metadata_filename.resolve())
147
- file.write(self._to_metadata_txt())
148
-
149
- # 2. Write volume/chapter files
150
- section_seq = 0
151
- chapter_seq = 0
152
- for section in self.book.toc:
153
- if isinstance(section, Volume):
154
- section_seq += 1
155
- chapter_seq = 0
156
- for chapter in section.chapters:
157
- chapter_seq += 1
158
- output_filename = (
159
- self._get_volume_chapter_filename_for_split(
160
- txt_filename,
161
- str(section_seq).rjust(2, "0"),
162
- str(chapter_seq).rjust(2, "0"),
163
- section,
164
- chapter,
165
- ".txt",
166
- )
167
- )
168
- with open(output_filename, "w", encoding="utf8") as file:
169
- logger.info("Creating %s", output_filename.resolve())
170
- file.write(
171
- self._to_volume_chapter_txt(section, chapter)
172
- )
173
- elif isinstance(section, Chapter):
174
- section_seq += 1
175
- output_filename = self._get_chapter_filename_for_split(
176
- txt_filename,
177
- str(section_seq).rjust(2, "0"),
178
- section,
179
- ".txt",
180
- )
181
- with open(output_filename, "w", encoding="utf8") as file:
182
- logger.info("Creating %s", output_filename.resolve())
183
- file.write(self._to_chapter_txt(section))
85
+ def _get_chapter_content_for_split(self, chapter: Chapter) -> str:
86
+ return self._to_chapter_txt(chapter)
184
87
 
185
- if self.config.open:
186
- self._open_file(metadata_filename)
88
+ def _get_file_extension_for_split(self) -> str:
89
+ return ".txt"
187
90
 
188
91
  def _to_txt(self) -> str:
189
92
  toc = self._to_toc("-") if self.config.with_toc else ""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: txt2ebook
3
- Version: 0.1.161
3
+ Version: 0.1.162
4
4
  Summary: CLI tool to convert txt file to ebook format
5
5
  Author-email: Kian-Meng Ang <kianmeng@cpan.org>
6
6
  License-Expression: AGPL-3.0-or-later
File without changes
File without changes
File without changes