summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Mayer <entroP@gmail.com>2020-04-12 14:53:59 +0200
committerGitHub <noreply@github.com>2020-04-12 14:53:59 +0200
commit0f97f6d488cbddde2fb129d20d60e34bdad68f28 (patch)
tree1de0f37a9b5d19aaa83d52fb4105477a7c87eaf9
parent4db9b944a237302b5558395038f6125a910c6a05 (diff)
parente618becfc08934a7813b8a9832ae5105c07d0595 (diff)
downloadpelican-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.py3
-rw-r--r--pelican/tests/content/article_with_markdown_and_nested_metadata.md5
-rw-r--r--pelican/tests/test_generators.py3
-rw-r--r--pelican/tests/test_readers.py13
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(