From 5d6513c36cb7cb16a97d21e7abe0108fbdd95557 Mon Sep 17 00:00:00 2001 From: Annika Backstrom Date: Wed, 23 Nov 2016 00:13:28 -0500 Subject: [PATCH 1/2] Skip Markdown metadata parsing within metadata --- pelican/readers.py | 3 +++ .../article_with_markdown_and_nested_metadata.md | 5 +++++ pelican/tests/test_generators.py | 3 +++ pelican/tests/test_readers.py | 13 +++++++++++++ 4 files changed, 24 insertions(+) create mode 100644 pelican/tests/content/article_with_markdown_and_nested_metadata.md 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': '

Test: This metadata value looks like metadata

', + } + self.assertDictHasSubset(metadata, expected) + def test_empty_file(self): reader = readers.MarkdownReader(settings=get_settings()) content, metadata = reader.read( From e618becfc08934a7813b8a9832ae5105c07d0595 Mon Sep 17 00:00:00 2001 From: Justin Mayer Date: Sun, 12 Apr 2020 11:37:10 +0200 Subject: [PATCH 2/2] Skip MD metadata parsing in latest Python-Markdown The syntax for unloading Python-Markdown extensions has changed to a "deregister" method on Registry objects. --- pelican/readers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pelican/readers.py b/pelican/readers.py index dea11fbd..6d9923f2 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -303,7 +303,7 @@ class MarkdownReader(BaseReader): formatted_fields = self.settings['FORMATTED_FIELDS'] # prevent metadata extraction in fields - self._md.preprocessors.pop('meta', None) + self._md.preprocessors.deregister('meta') output = {} for name, value in meta.items():