#!/usr/bin/env python from __future__ import print_function import argparse import markdown import os import sys import io def convert_markdown(in_fn): input_md = io.open(in_fn, mode="r", encoding="utf-8").read() html = markdown.markdown( "[TOC]\n" + input_md, extensions=["pymdownx.extra", "pymdownx.b64", "pymdownx.highlight", "pymdownx.emoji", "pymdownx.tilde", "toc"], extension_configs={ "pymdownx.b64": {"base_path": os.path.dirname(in_fn)}, "pymdownx.highlight": {"noclasses": True}, "toc": {"title": "Table of Contents"}, }, ) return html def wrap_html(contents): header = """
""" footer = """
""" return header + contents + footer def parse_args(args=None): parser = argparse.ArgumentParser() parser.add_argument("mdfile", type=argparse.FileType("r"), nargs="?", help="File to convert. Defaults to stdin.") parser.add_argument( "-o", "--out", type=argparse.FileType("w"), default=sys.stdout, help="Output file name. Defaults to stdout." ) return parser.parse_args(args) def main(args=None): args = parse_args(args) converted_md = convert_markdown(args.mdfile.name) html = wrap_html(converted_md) args.out.write(html) if __name__ == "__main__": sys.exit(main())