import os import markdown import jinja2 def read_markdown(page_name, markdown_path): md_file = os.path.join(markdown_path, page_name + '.md') with open(md_file) as f: md_text = f.read() return md_text def render_from_text(md_text, template_path): md = markdown.Markdown(extensions=['meta'], output_format='html5') html = md.convert(md_text) # get markdown metadata data = {key: md.Meta[key][0] for key in md.Meta.keys()} data.update({ 'content': html, # 'page_name': page_name, # Needed? }) template_name = data.get('template', 'default') template_file = os.path.join(template_path, template_name + '.html') with open(template_file) as f: template = f.read() page = jinja2.Template(template).render(**data) return page def render(page_name, markdown_path, template_path): md_text = read_markdown(page_name, markdown_path) page = render_from_text(md_text, template_path) return page def save(md_text, page_name, markdown_path): md_file = os.path.join(markdown_path, page_name + '.md') with open(md_file, 'w') as f: f.write(md_text)