Browse Source

read_markdown returns meta only if found, + add test. (Closes #120)

pull/124/head
Simon Conseil 12 years ago
parent
commit
aaf3a7d13e
  1. 25
      sigal/utils.py
  2. 16
      tests/test_utils.py

25
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):

16
tests/test_utils.py

@ -54,6 +54,22 @@ def test_read_markdown():
"<p>This is a funny description of this image</p>"
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'] == '<p>content</p>'
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

Loading…
Cancel
Save