diff --git a/sigal/utils.py b/sigal/utils.py index da060b2..3d3bff8 100644 --- a/sigal/utils.py +++ b/sigal/utils.py @@ -64,22 +64,27 @@ def url_from_path(path): def read_markdown(filename): - """Reads markdown file, converts output and fetches title and meta-data for further processing.""" - # 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) + """Reads markdown file, converts output and fetches title and meta-data for + further processing. + """ + # 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 codecs.open(filename, 'r', 'utf-8-sig') as f: text = f.read() + md = Markdown(extensions=['meta'], output_format='html5') - html = md.convert(text) + output = {'description': md.convert(text)} + try: meta = md.Meta.copy() - except (AttributeError): - meta = None - if meta: - title = md.Meta.get('title', [''])[0] + except AttributeError: + pass else: - title = None - return {'title': title, 'description': html, 'meta': meta} + output['meta'] = meta + output['title'] = md.Meta.get('title', [''])[0] + + return output def call_subprocess(cmd): diff --git a/tests/test_utils.py b/tests/test_utils.py index 902c622..dcacc7e 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -54,6 +54,22 @@ def test_read_markdown(): "
This is a funny description of this image
" +def test_read_markdown_empty_file(tmpdir): + src = tmpdir.join("file.txt") + src.write("content") + m = utils.read_markdown(str(src)) + assert m['title'] == '' + assert m['meta'] == {} + assert m['description'] == 'content
' + + src = tmpdir.join("empty.txt") + src.write("") + m = utils.read_markdown(str(src)) + assert 'title' not in m + assert 'meta' not in m + assert m['description'] == '' + + def test_call_subprocess(): returncode, stdout, stderr = utils.call_subprocess(['echo', 'ok']) assert returncode == 0