Last active
August 1, 2023 11:16
-
-
Save jiffyclub/5015986 to your computer and use it in GitHub Desktop.
This script turns Markdown into HTML using the Python markdown library and wraps the result in a complete HTML document with default Bootstrap styling so that it's immediately printable. Requires the python libraries jinja2, markdown, and mdx_smartypants.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import argparse | |
import sys | |
import jinja2 | |
import markdown | |
TEMPLATE = """<!DOCTYPE html> | |
<html> | |
<head> | |
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css" rel="stylesheet"> | |
<style> | |
body { | |
font-family: sans-serif; | |
} | |
code, pre { | |
font-family: monospace; | |
} | |
h1 code, | |
h2 code, | |
h3 code, | |
h4 code, | |
h5 code, | |
h6 code { | |
font-size: inherit; | |
} | |
</style> | |
</head> | |
<body> | |
<div class="container"> | |
{{content}} | |
</div> | |
</body> | |
</html> | |
""" | |
def parse_args(args=None): | |
d = 'Make a complete, styled HTML document from a Markdown file.' | |
parser = argparse.ArgumentParser(description=d) | |
parser.add_argument('mdfile', type=argparse.FileType('r'), nargs='?', | |
default=sys.stdin, | |
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) | |
md = args.mdfile.read() | |
extensions = ['extra', 'smarty'] | |
html = markdown.markdown(md, extensions=extensions, output_format='html5') | |
doc = jinja2.Template(TEMPLATE).render(content=html) | |
args.out.write(doc) | |
if __name__ == '__main__': | |
sys.exit(main()) |
Well played 👍
Nicely done!
Oh wow Matt! I found this script again today and realized that you were one of my instructors at SciPy last summer! We talked and had some drinks at Blue Owl Brewery—they were playing bingo :)
Nice, thank you!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is an excellent script and works great with text! Is there a way to embed images to the html file that are linked in the markdown document?