Markdown Converter¶
Convert all *.md files from a specified folder into HTML files in the
current working directory.
Usage:
python mark.py -b path/to/markdown_folder
python mark.py -t path/to/markdown_folder
Options:
-bGenerate Bootstrap-styled HTML.
-tGenerate Tailwind-styled HTML.
from __future__ import annotations
import argparse
import html
import re
from pathlib import Path
from md_utils import save_html
- process_folder(folder: Path, html_format: str) None¶
def process_folder(folder: Path, html_format: str) -> None:
if not folder.exists():
raise FileNotFoundError(f"Folder does not exist: {folder}")
if not folder.is_dir():
raise NotADirectoryError(f"Not a folder: {folder}")
md_files = sorted(folder.glob("*.md"))
if not md_files:
print(f"No .md files found in {folder}")
return
for md_file in md_files:
html_file = Path.cwd() / f"{md_file.stem}.html"
md_text = md_file.read_text(encoding="utf-8")
save_html(md_text, md_file.stem, html_format)
print(f"Created {html_file.name}")
- parse_args() argparse.Namespace¶
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="Convert Markdown files from a folder into HTML files in the current directory."
)
format_group = parser.add_mutually_exclusive_group(required=True)
format_group.add_argument(
"-b",
"--bootstrap",
action="store_true",
help="Create Bootstrap-styled HTML files.",
)
format_group.add_argument(
"-t",
"--tailwind",
action="store_true",
help="Create Tailwind-styled HTML files.",
)
parser.add_argument(
"folder",
type=Path,
help="Folder containing .md files to convert.",
)
return parser.parse_args()
- main() None¶
def main() -> None:
args = parse_args()
html_format = "Bootstrap" if args.bootstrap else "Tailwind"
process_folder(args.folder, html_format)
if __name__ == "__main__":
main()