From c638cee495674145c8cb9d8a84615c559742324e Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Tue, 6 Jun 2017 15:34:13 -0300 Subject: [PATCH 1/2] Support blank lines in YAML/TOML metadata (part of issue #2801) --- CHANGES.txt | 1 + nikola/plugin_categories.py | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index fbb918f0b1..0479ad45b5 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -11,6 +11,7 @@ Features Bugfixes -------- +* Support empty lines in YAML/TOML metadata (Part of issue #2801) * Tests run on macOS. New in v7.8.7 diff --git a/nikola/plugin_categories.py b/nikola/plugin_categories.py index 14025d5144..1fd2ef8e9e 100644 --- a/nikola/plugin_categories.py +++ b/nikola/plugin_categories.py @@ -338,7 +338,12 @@ def split_metadata(self, data): This splits in the first empty line that is NOT at the beginning of the document. """ - split_result = re.split('(\n\n|\r\n\r\n)', data.lstrip(), maxsplit=1) + if data.startswith('---'): # YAML metadata + split_result = re.split('(---\n\n|----\r\n\r\n)', data.lstrip(), maxsplit=1) + elif data.startswith('+++'): # TOML metadata + split_result = re.split('(+++\n\n|+++\r\n\r\n)', data.lstrip(), maxsplit=1) + else: + split_result = re.split('(\n\n|\r\n\r\n)', data.lstrip(), maxsplit=1) if len(split_result) == 1: return '', split_result[0] # ['metadata', '\n\n', 'post content'] From d2f99ebcf578b510b052ecdf77d3b107b871b35b Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Tue, 6 Jun 2017 16:08:38 -0300 Subject: [PATCH 2/2] better split --- nikola/plugin_categories.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nikola/plugin_categories.py b/nikola/plugin_categories.py index 1fd2ef8e9e..8055ecaff3 100644 --- a/nikola/plugin_categories.py +++ b/nikola/plugin_categories.py @@ -339,9 +339,9 @@ def split_metadata(self, data): of the document. """ if data.startswith('---'): # YAML metadata - split_result = re.split('(---\n\n|----\r\n\r\n)', data.lstrip(), maxsplit=1) + split_result = re.split('(\n---\n\n|\r\n---\r\n\r\n)', data.lstrip(), maxsplit=1) elif data.startswith('+++'): # TOML metadata - split_result = re.split('(+++\n\n|+++\r\n\r\n)', data.lstrip(), maxsplit=1) + split_result = re.split('(\n+++\n\n|\r\n+++\r\n\r\n)', data.lstrip(), maxsplit=1) else: split_result = re.split('(\n\n|\r\n\r\n)', data.lstrip(), maxsplit=1) if len(split_result) == 1: