You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
#!/usr/bin/env python
|
|
|
|
import argparse, sys, markdown
|
|
|
|
TEMPLATE = """<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta name="referrer" content="no-referrer" />
|
|
<meta name="referrer" content="unsafe-url" />
|
|
<meta name="referrer" content="origin" />
|
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
|
<meta name="referrer" content="origin-when-cross-origin" />
|
|
|
|
<title>Page Title</title>
|
|
|
|
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
|
<style>
|
|
body {
|
|
font-family: Helvetica,Arial,sans-serif;
|
|
}
|
|
code, pre {
|
|
font-family: monospace;
|
|
}
|
|
</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 = TEMPLATE.replace('{{content}}', html);
|
|
args.out.write(doc)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main()) |