diff options
author | Annika Backstrom <annika@sixohthree.com> | 2016-11-23 00:13:28 -0500 |
---|---|---|
committer | Justin Mayer <entroP@gmail.com> | 2020-04-12 11:40:43 +0200 |
commit | 5d6513c36cb7cb16a97d21e7abe0108fbdd95557 (patch) | |
tree | 6eb3742795c2b6a130a1e74fb132ca791b374689 | |
parent | 4db9b944a237302b5558395038f6125a910c6a05 (diff) | |
download | pelican-5d6513c36cb7cb16a97d21e7abe0108fbdd95557.tar.gz |
Skip Markdown metadata parsing within metadata
-rw-r--r-- | pelican/readers.py | 3 | ||||
-rw-r--r-- | pelican/tests/content/article_with_markdown_and_nested_metadata.md | 5 | ||||
-rw-r--r-- | pelican/tests/test_generators.py | 3 | ||||
-rw-r--r-- | pelican/tests/test_readers.py | 13 |
4 files changed, 24 insertions, 0 deletions
diff --git a/pelican/readers.py b/pelican/readers.py index 673b637e..dea11fbd 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -302,6 +302,9 @@ class MarkdownReader(BaseReader): """Return the dict containing document metadata""" formatted_fields = self.settings['FORMATTED_FIELDS'] + # prevent metadata extraction in fields + self._md.preprocessors.pop('meta', None) + output = {} for name, value in meta.items(): name = name.lower() diff --git a/pelican/tests/content/article_with_markdown_and_nested_metadata.md b/pelican/tests/content/article_with_markdown_and_nested_metadata.md new file mode 100644 index 00000000..3968027b --- /dev/null +++ b/pelican/tests/content/article_with_markdown_and_nested_metadata.md @@ -0,0 +1,5 @@ +Title: Article with markdown and nested summary metadata +Date: 2012-10-30 +Summary: Test: This metadata value looks like metadata + +This is some content. diff --git a/pelican/tests/test_generators.py b/pelican/tests/test_generators.py index 3ab341a3..1f8157a6 100644 --- a/pelican/tests/test_generators.py +++ b/pelican/tests/test_generators.py @@ -239,6 +239,8 @@ class TestArticlesGenerator(unittest.TestCase): ['Article title', 'published', 'Default', 'article'], ['Article with markdown and summary metadata multi', 'published', 'Default', 'article'], + ['Article with markdown and nested summary metadata', 'published', + 'Default', 'article'], ['Article with markdown and summary metadata single', 'published', 'Default', 'article'], ['Article with markdown containing footnotes', 'published', @@ -554,6 +556,7 @@ class TestArticlesGenerator(unittest.TestCase): 'Article title', 'Article with Nonconformant HTML meta tags', 'Article with an inline SVG', + 'Article with markdown and nested summary metadata', 'Article with markdown and summary metadata multi', 'Article with markdown and summary metadata single', 'Article with markdown containing footnotes', diff --git a/pelican/tests/test_readers.py b/pelican/tests/test_readers.py index 5b87aeac..70e6da77 100644 --- a/pelican/tests/test_readers.py +++ b/pelican/tests/test_readers.py @@ -645,6 +645,19 @@ class MdReaderTest(ReaderTest): } self.assertDictHasSubset(metadata, expected) + def test_metadata_not_parsed_for_metadata(self): + settings = get_settings() + settings['FORMATTED_FIELDS'] = ['summary'] + + reader = readers.MarkdownReader(settings=settings) + content, metadata = reader.read( + _path('article_with_markdown_and_nested_metadata.md')) + expected = { + 'title': 'Article with markdown and nested summary metadata', + 'summary': '<p>Test: This metadata value looks like metadata</p>', + } + self.assertDictHasSubset(metadata, expected) + def test_empty_file(self): reader = readers.MarkdownReader(settings=get_settings()) content, metadata = reader.read( |