forked from github/pelican
Merge pull request #1310 from eincs/handle-multiline-meta-in-markdown
Handle multi-line meta in markdown content properly
This commit is contained in:
commit
5959346e17
3 changed files with 20 additions and 0 deletions
|
|
@ -201,12 +201,18 @@ class MarkdownReader(BaseReader):
|
|||
for name, value in meta.items():
|
||||
name = name.lower()
|
||||
if name == "summary":
|
||||
# handle summary metadata as markdown
|
||||
# summary metadata is special case and join all list values
|
||||
summary_values = "\n".join(value)
|
||||
# reset the markdown instance to clear any state
|
||||
self._md.reset()
|
||||
summary = self._md.convert(summary_values)
|
||||
output[name] = self.process_metadata(name, summary)
|
||||
elif len(value) > 1:
|
||||
# handle list metadata as list of string
|
||||
output[name] = self.process_metadata(name, value)
|
||||
else:
|
||||
# otherwise, handle metadata as single string
|
||||
output[name] = self.process_metadata(name, value[0])
|
||||
return output
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,12 @@ Title: Article with markdown containing footnotes
|
|||
Date: 2012-10-31
|
||||
Modified: 2012-11-01
|
||||
Summary: Summary with **inline** markup *should* be supported.
|
||||
Multiline: Line Metadata should be handle properly.
|
||||
See syntax of Meta-Data extension of Python Markdown package:
|
||||
If a line is indented by 4 or more spaces,
|
||||
that line is assumed to be an additional line of the value
|
||||
for the previous keyword.
|
||||
A keyword may have as many lines as desired.
|
||||
|
||||
This is some content[^1] with some footnotes[^footnote]
|
||||
|
||||
|
|
|
|||
|
|
@ -214,6 +214,14 @@ class MdReaderTest(ReaderTest):
|
|||
'date': datetime.datetime(2012, 10, 31),
|
||||
'modified': datetime.datetime(2012, 11, 1),
|
||||
'slug': 'article-with-markdown-containing-footnotes',
|
||||
'multiline': [
|
||||
'Line Metadata should be handle properly.',
|
||||
'See syntax of Meta-Data extension of Python Markdown package:',
|
||||
'If a line is indented by 4 or more spaces,',
|
||||
'that line is assumed to be an additional line of the value',
|
||||
'for the previous keyword.',
|
||||
'A keyword may have as many lines as desired.',
|
||||
]
|
||||
}
|
||||
self.assertEqual(content, expected_content)
|
||||
for key, value in metadata.items():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue