diff --git a/sigal/utils.py b/sigal/utils.py index 411ac00..6c1d06a 100644 --- a/sigal/utils.py +++ b/sigal/utils.py @@ -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