Python で Markdown 文書を HTML へ変換する
python-markdown2, py-gfm, pygments というライブラリを使って Markdown 文書を HTML へ変換するメモです。
GitHub Flavored Markdown (GFM) の特徴である Fenced Code Block にも対応しています。
インストール
$ pip3 install --user python-markdown2 py-gfm pygments pygments-style-github
スクリプト
md2html.py
#!/usr/bin/python3 import sys from textwrap import dedent from markdown2 import markdown CHARSET = 'utf-8' def main(): if len(sys.argv) < 2: print('Usage: md2html path/to/file', file=sys.stderr) sys.exit(1) with open(sys.argv[1], encoding=CHARSET) as f: source = f.read() body = markdown(source, extras=['fenced-code-blocks']) html = dedent('''\ <html> <head> <meta charset="{charset}"> <link rel="stylesheet" type="text/css" href="github_pygments.css"> </head> <body>{body}</body> </html> ''').format(charset=CHARSET, body=body) print(html) if __name__ == '__main__': main()
CSS の準備
$ ~/.local/bin/pygmentize -S github -f html > github_pygments.css
変換
$ ./md2html.py hoge.md > hoge.html
おまけ:ブラウザから確認
手軽にブラウザから確認するには Python で HTTP サーバを立てると便利です。 この程度の静的 HTML なら直接ブラウザで開いてもいいのですが、HTTP サーバを立てればリモート開発している時も便利です。
$ python3 -m http.server 8000
8000 番ポートで起動します。