mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Handle list metadata as list of string in MarkdownReader
This commit is contained in:
parent
06080dd873
commit
22484983e9
3 changed files with 20 additions and 0 deletions
|
|
@ -204,12 +204,18 @@ class MarkdownReader(BaseReader):
|
||||||
for name, value in meta.items():
|
for name, value in meta.items():
|
||||||
name = name.lower()
|
name = name.lower()
|
||||||
if name == "summary":
|
if name == "summary":
|
||||||
|
# handle summary metadata as markdown
|
||||||
|
# summary metadata is special case and join all list values
|
||||||
summary_values = "\n".join(value)
|
summary_values = "\n".join(value)
|
||||||
# reset the markdown instance to clear any state
|
# reset the markdown instance to clear any state
|
||||||
self._md.reset()
|
self._md.reset()
|
||||||
summary = self._md.convert(summary_values)
|
summary = self._md.convert(summary_values)
|
||||||
output[name] = self.process_metadata(name, summary)
|
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:
|
else:
|
||||||
|
# otherwise, handle metadata as single string
|
||||||
output[name] = self.process_metadata(name, value[0])
|
output[name] = self.process_metadata(name, value[0])
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,12 @@ Title: Article with markdown containing footnotes
|
||||||
Date: 2012-10-31
|
Date: 2012-10-31
|
||||||
Modified: 2012-11-01
|
Modified: 2012-11-01
|
||||||
Summary: Summary with **inline** markup *should* be supported.
|
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]
|
This is some content[^1] with some footnotes[^footnote]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -214,6 +214,14 @@ class MdReaderTest(ReaderTest):
|
||||||
'date': datetime.datetime(2012, 10, 31),
|
'date': datetime.datetime(2012, 10, 31),
|
||||||
'modified': datetime.datetime(2012, 11, 1),
|
'modified': datetime.datetime(2012, 11, 1),
|
||||||
'slug': 'article-with-markdown-containing-footnotes',
|
'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)
|
self.assertEqual(content, expected_content)
|
||||||
for key, value in metadata.items():
|
for key, value in metadata.items():
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue