txt2ebook 0.1.125__tar.gz → 0.1.127__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 (52) hide show
  1. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/PKG-INFO +1 -1
  2. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/pyproject.toml +1 -1
  3. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/__init__.py +1 -1
  4. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/__init__.py +0 -24
  5. txt2ebook-0.1.127/src/txt2ebook/helpers/__init__.py +36 -0
  6. txt2ebook-0.1.125/src/txt2ebook/helpers/__init__.py +0 -68
  7. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/LICENSE.md +0 -0
  8. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/README.md +0 -0
  9. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/__main__.py +0 -0
  10. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/cli.py +0 -0
  11. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/exceptions.py +0 -0
  12. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/base.py +0 -0
  13. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/epub.py +0 -0
  14. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/gmi.py +0 -0
  15. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/md.py +0 -0
  16. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/pdf.py +0 -0
  17. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/templates/__init__.py +0 -0
  18. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/templates/epub/__init__.py +0 -0
  19. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/templates/epub/clean.css +0 -0
  20. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/templates/epub/condense.css +0 -0
  21. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/templates/epub/noindent.css +0 -0
  22. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/tex.py +0 -0
  23. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/txt.py +0 -0
  24. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/formats/typ.py +0 -0
  25. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/languages/__init__.py +0 -0
  26. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/languages/en.py +0 -0
  27. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/languages/zh_cn.py +0 -0
  28. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/languages/zh_tw.py +0 -0
  29. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/locales/en/LC_MESSAGES/txt2ebook.mo +0 -0
  30. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/locales/en/LC_MESSAGES/txt2ebook.po +0 -0
  31. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/locales/txt2ebook.pot +0 -0
  32. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.mo +0 -0
  33. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po +0 -0
  34. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.mo +0 -0
  35. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.po +0 -0
  36. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/models/__init__.py +0 -0
  37. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/models/book.py +0 -0
  38. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/models/chapter.py +0 -0
  39. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/models/volume.py +0 -0
  40. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/parser.py +0 -0
  41. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/__init__.py +0 -0
  42. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/env.py +0 -0
  43. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/epub.py +0 -0
  44. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/gmi.py +0 -0
  45. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/massage.py +0 -0
  46. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/md.py +0 -0
  47. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/parse.py +0 -0
  48. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/pdf.py +0 -0
  49. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/tex.py +0 -0
  50. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/subcommands/typ.py +0 -0
  51. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/tokenizer.py +0 -0
  52. {txt2ebook-0.1.125 → txt2ebook-0.1.127}/src/txt2ebook/zh_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: txt2ebook
3
- Version: 0.1.125
3
+ Version: 0.1.127
4
4
  Summary: CLI tool to convert txt file to ebook format
5
5
  Home-page: https://github.com/kianmeng/txt2ebook
6
6
  License: AGPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "txt2ebook"
3
- version = "0.1.125"
3
+ version = "0.1.127"
4
4
  description = "CLI tool to convert txt file to ebook format"
5
5
  authors = ["Kian-Meng Ang <kianmeng@cpan.org>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -24,7 +24,7 @@ import langdetect
24
24
 
25
25
  logger = logging.getLogger(__name__)
26
26
 
27
- __version__ = "0.1.125"
27
+ __version__ = "0.1.126"
28
28
 
29
29
 
30
30
  def setup_logger(config: argparse.Namespace) -> None:
@@ -27,7 +27,6 @@ from txt2ebook.formats.pdf import PdfWriter
27
27
  from txt2ebook.formats.tex import TexWriter
28
28
  from txt2ebook.formats.txt import TxtWriter
29
29
  from txt2ebook.formats.typ import TypWriter
30
- from txt2ebook.helpers import load_class, to_classname
31
30
  from txt2ebook.models import Book
32
31
 
33
32
  EBOOK_FORMATS = ["epub", "gmi", "md", "pdf", "tex", "txt", "typ"]
@@ -51,29 +50,6 @@ PAGE_SIZES = [
51
50
  "letter",
52
51
  ]
53
52
 
54
-
55
- def create_format(
56
- book: txt2ebook.models.book.Book,
57
- ebook_format: str,
58
- config: argparse.Namespace,
59
- ) -> Union[TxtWriter, EpubWriter]:
60
- """Create ebook formatter by format using factory function.
61
-
62
- Args:
63
- book(txt2ebook.models.book.Book): The book model which contains
64
- metadata and table of contents of volumes and chapters.
65
- ebook_format(str): The ebook format.
66
- config(argparse.Namespace): The configs from the command-line.
67
-
68
- Returns:
69
- TxtWriter | EpubWriter
70
- """
71
- class_name = to_classname(ebook_format, "Writer")
72
- klass = load_class("txt2ebook.formats", class_name)
73
- formatter = klass(book, config)
74
- return formatter
75
-
76
-
77
53
  __all__ = [
78
54
  "Book",
79
55
  "EBOOK_FORMATS",
@@ -0,0 +1,36 @@
1
+ # Copyright (c) 2021,2022,2023,2024,2025 Kian-Meng Ang
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU Affero General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU Affero General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Affero General Public License
14
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
15
+
16
+ """Common helper functions."""
17
+
18
+ import logging
19
+ import re
20
+ import sys
21
+ from importlib import import_module
22
+ from typing import Any
23
+
24
+ logger = logging.getLogger(__name__)
25
+
26
+
27
+ def lower_underscore(string: str) -> str:
28
+ """Convert a string to lower case and replace multiple spaces to single underscore.
29
+
30
+ Args:
31
+ string (str): A string.
32
+
33
+ Returns:
34
+ str: Formatted string.
35
+ """
36
+ return re.sub(r'\s+', '_', string.lower().strip())
@@ -1,68 +0,0 @@
1
- # Copyright (c) 2021,2022,2023,2024,2025 Kian-Meng Ang
2
- #
3
- # This program is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU Affero General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU Affero General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <https://www.gnu.org/licenses/>.
15
-
16
- """Common helper functions."""
17
-
18
- import logging
19
- import sys
20
- from importlib import import_module
21
- from typing import Any
22
-
23
- logger = logging.getLogger(__name__)
24
-
25
-
26
- def to_classname(words: str, suffix: str) -> str:
27
- """Generate class name from words.
28
-
29
- Args:
30
- words (str): Words to be converted
31
- suffix (str): The suffix name to be appended
32
-
33
- Returns:
34
- str: A class name
35
- """
36
- return words.replace("-", " ").title().replace(" ", "") + suffix
37
-
38
-
39
- def load_class(package_name: str, class_name: str) -> Any:
40
- """Load class dynamically.
41
-
42
- Args:
43
- package_name (str): A package name
44
- class_name (str): A class name
45
-
46
- Returns:
47
- any: A loaded class
48
- """
49
- try:
50
- package = import_module(package_name)
51
- klass = getattr(package, class_name)
52
- logger.debug("Load module: %s.%s", package_name, class_name)
53
- return klass
54
- except AttributeError:
55
- logger.error("Fail to load module: %s.%s", package_name, class_name)
56
- sys.exit()
57
-
58
-
59
- def lower_underscore(string: str) -> str:
60
- """Convert a string to lower case and underscore space.
61
-
62
- Args:
63
- string (str): A string.
64
-
65
- Returns:
66
- str: Formatted string.
67
- """
68
- return string.lower().replace(" ", "_")
File without changes
File without changes