ciclostile/src/ciclostile/__init__.py

39 lines
1022 B
Python
Raw Normal View History

2018-04-07 04:17:49 +02:00
#!/usr/bin/env python3
2018-02-22 16:43:12 +01:00
import os
import markdown
import jinja2
2018-04-07 04:17:49 +02:00
def parse(mdtext, parser=None):
if parser is None:
parser = markdown.Markdown(extensions=['meta'], output_format='html5')
html = parser.convert(mdtext)
2018-02-22 16:43:12 +01:00
# get markdown metadata
2018-04-07 04:17:49 +02:00
data = {key: parser.Meta[key][0] for key in parser.Meta.keys()}
2018-02-22 16:43:12 +01:00
data.update({
'content': html,
})
2018-04-07 04:17:49 +02:00
return data
2018-02-22 16:43:12 +01:00
2018-04-07 04:17:49 +02:00
def parse_file(filepath, parser=None):
with open(filepath) as fh:
return parse(fh.read(), parser=parser)
2018-02-22 16:43:12 +01:00
2018-04-07 04:17:49 +02:00
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
2018-02-22 16:43:12 +01:00
2018-04-07 04:17:49 +02:00
def compile(template, data):
t = jinja2.Template(template)
return t.render(**data)