mirror of
https://github.com/EDeev/converterbot.git
synced 2026-10-07 20:49:33 +03:00
md2gost: пакет и командная строка
pip install md2gost → md2gost report.md [-o out.docx] с параметрами шрифта, размера, интервала и нумерации; также python -m md2gost.
This commit is contained in:
parent
18e1a99ed8
commit
7b8e3ce61a
4 changed files with 102 additions and 0 deletions
6
md2gost/__init__.py
Normal file
6
md2gost/__init__.py
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
"""md2gost — Markdown в DOCX по ГОСТ 7.32-2017"""
|
||||||
|
|
||||||
|
from .converter import DocumentSettings, MarkdownToDocxConverter
|
||||||
|
|
||||||
|
__version__ = "1.0.0"
|
||||||
|
__all__ = ["DocumentSettings", "MarkdownToDocxConverter", "__version__"]
|
||||||
5
md2gost/__main__.py
Normal file
5
md2gost/__main__.py
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from .cli import main
|
||||||
|
|
||||||
|
sys.exit(main())
|
||||||
47
md2gost/cli.py
Normal file
47
md2gost/cli.py
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from . import __version__
|
||||||
|
from .converter import DocumentSettings, MarkdownToDocxConverter
|
||||||
|
|
||||||
|
|
||||||
|
def build_parser():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
prog="md2gost",
|
||||||
|
description="Конвертирует Markdown в DOCX, оформленный по ГОСТ 7.32-2017: поля, шрифт, интервалы, "
|
||||||
|
"нумерация страниц и заголовков, таблицы, списки, сноски, список литературы.",
|
||||||
|
)
|
||||||
|
parser.add_argument("input", type=Path, help="файл .md")
|
||||||
|
parser.add_argument("-o", "--output", type=Path, help="куда сохранить .docx (по умолчанию — рядом с .md)")
|
||||||
|
parser.add_argument("--font", default="Times New Roman", help="шрифт (по умолчанию Times New Roman)")
|
||||||
|
parser.add_argument("--size", type=int, default=14, help="размер основного текста, пт (по умолчанию 14)")
|
||||||
|
parser.add_argument("--spacing", type=float, default=1.5, help="межстрочный интервал (по умолчанию 1.5)")
|
||||||
|
parser.add_argument("--no-heading-numbers", action="store_true", help="не нумеровать заголовки")
|
||||||
|
parser.add_argument("--no-page-numbers", action="store_true", help="не нумеровать страницы")
|
||||||
|
parser.add_argument("--number-title-page", action="store_true", help="ставить номер и на первой странице")
|
||||||
|
parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}")
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
|
def main(argv=None):
|
||||||
|
args = build_parser().parse_args(argv)
|
||||||
|
if not args.input.is_file():
|
||||||
|
print(f"md2gost: файл не найден: {args.input}", file=sys.stderr)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
settings = DocumentSettings()
|
||||||
|
settings.font_name = args.font
|
||||||
|
settings.font_size = args.size
|
||||||
|
settings.line_spacing = args.spacing
|
||||||
|
settings.auto_numbering_headings = not args.no_heading_numbers
|
||||||
|
settings.page_numbering = not args.no_page_numbers
|
||||||
|
settings.exclude_title_page_numbering = not args.number_title_page
|
||||||
|
|
||||||
|
output = MarkdownToDocxConverter(settings).convert(str(args.input), str(args.output) if args.output else None)
|
||||||
|
print(output)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
||||||
44
pyproject.toml
Normal file
44
pyproject.toml
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
[build-system]
|
||||||
|
requires = ["hatchling>=1.24"]
|
||||||
|
build-backend = "hatchling.build"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "md2gost"
|
||||||
|
dynamic = ["version"]
|
||||||
|
description = "Markdown to DOCX formatted per GOST 7.32-2017 (Russian standard for reports)"
|
||||||
|
readme = "README.en.md"
|
||||||
|
license = "MIT"
|
||||||
|
license-files = ["LICENSE"]
|
||||||
|
authors = [{ name = "Egor Deev", email = "egor@deev.space" }]
|
||||||
|
requires-python = ">=3.9"
|
||||||
|
dependencies = ["python-docx>=1.1"]
|
||||||
|
keywords = ["markdown", "docx", "gost", "word", "report", "converter"]
|
||||||
|
classifiers = [
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"Operating System :: OS Independent",
|
||||||
|
"Environment :: Console",
|
||||||
|
"Natural Language :: Russian",
|
||||||
|
"Topic :: Office/Business :: Office Suites",
|
||||||
|
"Topic :: Text Processing :: Markup :: Markdown",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
Homepage = "https://github.com/EDeev/my_converterbot"
|
||||||
|
Issues = "https://github.com/EDeev/my_converterbot/issues"
|
||||||
|
Bot = "https://t.me/my_convbot"
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
md2gost = "md2gost.cli:main"
|
||||||
|
|
||||||
|
[tool.hatch.version]
|
||||||
|
path = "md2gost/__init__.py"
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel]
|
||||||
|
packages = ["md2gost"]
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.sdist]
|
||||||
|
include = ["md2gost", "tests/test_md2gost.py", "README.md", "README.en.md", "LICENSE"]
|
||||||
|
|
||||||
|
[tool.ruff]
|
||||||
|
target-version = "py39"
|
||||||
|
line-length = 120
|
||||||
Loading…
Add table
Reference in a new issue