Initialize markdown only once

This commit is contained in:
Glandos
2018-06-16 23:01:03 +02:00
parent d6843ce03d
commit cb2a0898e5

View File

@@ -29,6 +29,8 @@ VIDEO_MIMES = {'.mp4': 'video/mp4',
'.webm': 'video/webm',
'.ogv': 'video/ogg'}
MD = None
class Devnull(object):
"""'Black hole' for output that should not be printed"""
@@ -68,26 +70,28 @@ def read_markdown(filename):
"""Reads markdown file, converts output and fetches title and meta-data for
further processing.
"""
global MD
# Use utf-8-sig codec to remove BOM if it is present. This is only possible
# this way prior to feeding the text to the markdown parser (which would
# also default to pure utf-8)
with open(filename, 'r', encoding='utf-8-sig') as f:
text = f.read()
md = Markdown(extensions=['markdown.extensions.meta',
'markdown.extensions.tables'],
output_format='html5')
if MD is None:
MD = Markdown(extensions=['markdown.extensions.meta',
'markdown.extensions.tables'],
output_format='html5')
# Mark HTML with Markup to prevent jinja2 autoescaping
output = {'description': Markup(md.convert(text))}
output = {'description': Markup(MD.convert(text))}
try:
meta = md.Meta.copy()
meta = MD.Meta.copy()
except AttributeError:
pass
else:
output['meta'] = meta
try:
output['title'] = md.Meta['title'][0]
output['title'] = MD.Meta['title'][0]
except KeyError:
pass