#!/usr/bin/env python3 import os import markdown import jinja2 def parse(mdtext, parser=None): if parser is None: parser = markdown.Markdown(extensions=['meta'], output_format='html5') html = parser.convert(mdtext) # get markdown metadata data = {key: parser.Meta[key][0] for key in parser.Meta.keys()} data.update({ 'content': html, }) return data def parse_file(filepath, parser=None): with open(filepath) as fh: return parse(fh.read(), parser=parser) def index(folder): data = {'pages': []} parser = markdown.Markdown(extensions=['meta'], output_format='html5') for dirpath, _, files in os.walk(folder): valid_files = (os.path.join(dirpath, f) for f in files if f.endswith('.md')) for fpath in valid_files: data['pages'].append(parse_file(fpath, parser=parser)) return data def compile(template, data): t = jinja2.Template(template) return t.render(**data)