forked from unit/ciclostile
48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
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)
|