python の http.server.SimpleHTTPRequestHandler を使って Markdown をHTMLに変換する簡単なサーバを書いてみた。
mkdir markdown_server cd markdown_server python3 -m venv venv source venv/bin/activate pip install markdown
https://docs.python.org/ja/3/library/http.server.html
https://docs.python.org/ja/3/library/http.server.html#http.server.SimpleHTTPRequestHandler
"""Markdown公開用サーバ.""" import http.server import markdown import socketserver import os PORT = 8000 class MarkdownHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): path = self.path.split("?")[0][1:] *_, ext = path.split(".") if ext == "md" and os.path.exists(path): with open(path, "r") as f: lines = "\n".join(f.readlines()) response = markdown.Markdown().convert(lines) response_bytes = response.encode("utf-8") self.send_response(HTTPStatus.OK) self.send_header("Content-Type", "text/html; charset=utf-8") self.send_header('Content-Length', len(response_bytes)) self.end_headers() self.wfile.write(response) return super().do_GET() # ポートの再利用を許可する(コレがないとしばらくの間は同じポートを利用できない) socketserver.TCPServer.allow_reuse_address = True with socketserver.TCPServer(("", PORT), MarkdownHandler) as httpd: print("serving at port", PORT) httpd.serve_forever()