diff options
author | Justin Mayer <entroP@gmail.com> | 2020-04-12 14:53:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-12 14:53:59 +0200 |
commit | 0f97f6d488cbddde2fb129d20d60e34bdad68f28 (patch) | |
tree | 1de0f37a9b5d19aaa83d52fb4105477a7c87eaf9 | |
parent | 4db9b944a237302b5558395038f6125a910c6a05 (diff) | |
parent | e618becfc08934a7813b8a9832ae5105c07d0595 (diff) | |
download | pelican-0f97f6d488cbddde2fb129d20d60e34bdad68f28.tar.gz |
Merge pull request #2714 from getpelican/skip-md-metadata-parse
Skip Markdown metadata parsing within metadata fields
-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..6d9923f2 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.deregister('meta') + 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( |