txt2ebook 0.1.126__tar.gz → 0.1.128__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.
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/PKG-INFO +1 -1
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/pyproject.toml +2 -2
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/__init__.py +0 -1
- txt2ebook-0.1.128/src/txt2ebook/helpers/__init__.py +45 -0
- txt2ebook-0.1.126/src/txt2ebook/helpers/__init__.py +0 -68
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/LICENSE.md +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/README.md +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/__init__.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/__main__.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/cli.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/exceptions.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/base.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/epub.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/gmi.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/md.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/pdf.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/templates/__init__.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/templates/epub/__init__.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/templates/epub/clean.css +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/templates/epub/condense.css +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/templates/epub/noindent.css +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/tex.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/txt.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/formats/typ.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/languages/__init__.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/languages/en.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/languages/zh_cn.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/languages/zh_tw.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/en/LC_MESSAGES/txt2ebook.mo +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/en/LC_MESSAGES/txt2ebook.po +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/txt2ebook.pot +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.mo +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.mo +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.po +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/models/__init__.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/models/book.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/models/chapter.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/models/volume.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/parser.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/__init__.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/env.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/epub.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/gmi.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/massage.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/md.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/parse.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/pdf.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/tex.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/subcommands/typ.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/tokenizer.py +0 -0
- {txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/zh_utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "txt2ebook"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.128"
|
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"
|
@@ -45,7 +45,7 @@ lxml = "^5.2.2"
|
|
45
45
|
jieba = "^0.42.1"
|
46
46
|
|
47
47
|
[tool.poetry.scripts]
|
48
|
-
txt2ebook = 'txt2ebook.cli
|
48
|
+
txt2ebook = 'txt2ebook.cli:main'
|
49
49
|
tte = 'txt2ebook.cli:main'
|
50
50
|
|
51
51
|
[tool.poetry.group.dev.dependencies]
|
@@ -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"]
|
@@ -0,0 +1,45 @@
|
|
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
|
+
Examples:
|
37
|
+
|
38
|
+
>>> lower_underscore("Hello World")
|
39
|
+
'hello_world'
|
40
|
+
>>> lower_underscore("Hello World")
|
41
|
+
'hello_world'
|
42
|
+
>>> lower_underscore("Hello\tWorld")
|
43
|
+
'hello_world'
|
44
|
+
"""
|
45
|
+
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.mo
RENAMED
File without changes
|
{txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po
RENAMED
File without changes
|
{txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.mo
RENAMED
File without changes
|
{txt2ebook-0.1.126 → txt2ebook-0.1.128}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.po
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|