diff options
author | MinchinWeb <w_minchin@hotmail.com> | 2020-04-11 16:14:08 -0600 |
---|---|---|
committer | MinchinWeb <w_minchin@hotmail.com> | 2020-04-18 12:35:46 -0700 |
commit | 68ad5c0c1aaef33a126de33c88f260d48c7d18ba (patch) | |
tree | aff94e9d4fe823d20e17f995d64d7ef6fdb04be9 | |
parent | 62ea1e2b23992281c301d58b5270b987ce799580 (diff) |
Ensure exported entries end in a newline for Markdown and YAML exporters (#908)
* [Markdown Exporter] [YAML Exporter] Ensure exported entires end in a newline
Fixes #768, Fixes #881.
If the exported entry does not have a final empty line, this will add one on export. Some Markdown parsers get picky about not having a empty line above a heading....
* fix black formatting issues
* explicitly sort filenames
to deal with inconsistent default file ordering on different OS's
* Update .gitignore
* Update test for typo fix
Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | features/regression.feature | 37 | ||||
-rw-r--r-- | features/steps/export_steps.py | 5 | ||||
-rw-r--r-- | jrnl/plugins/markdown_exporter.py | 4 | ||||
-rw-r--r-- | jrnl/plugins/yaml_exporter.py | 4 |
5 files changed, 52 insertions, 1 deletions
@@ -42,11 +42,12 @@ obj # virtaulenv env/ env*/ +venv*/ # PyCharm Project files .idea/ -# export testing director +# export testing directories exp/ _extras/ diff --git a/features/regression.feature b/features/regression.feature index 4dc35b5a..033ec95c 100644 --- a/features/regression.feature +++ b/features/regression.feature @@ -123,6 +123,43 @@ Feature: Zapped bugs should stay dead. Then the output should contain "Adding an entry right now." Then the output should not contain "A future entry." + # See issues #768 and #881 + # the "deletion" journal is used because it doesn't have a newline at the + # end of the last entry + Scenario: Add a blank line to Markdown export is there isn't one already + Given we use the config "deletion.yaml" + When we run "jrnl --export markdown" + Then the output should be + """ + # 2019 + + ## October + + ### 2019-10-29 11:11 First entry. + + + ### 2019-10-29 11:11 Second entry. + + + ### 2019-10-29 11:13 Third entry. + + """ + + # See issues #768 and #881 + Scenario: Add a blank line to YAML export is there isn't one already + Given we use the config "deletion.yaml" + And we created a directory named "bug768" + When we run "jrnl --export yaml -o bug768" + Then "bug768" should contain the files ["2019-10-29_first-entry.md", "2019-10-29_second-entry.md", "2019-10-29_third-entry.md"] + And the content of exported yaml "bug768/2019-10-29_third-entry.md" should be + """ + title: Third entry. + date: 2019-10-29 11:13 + starred: False + tags: + + """ + @deployment_tests Scenario: Version numbers should stay in sync Given we use the config "basic.yaml" diff --git a/features/steps/export_steps.py b/features/steps/export_steps.py index b7965ab8..40127ecc 100644 --- a/features/steps/export_steps.py +++ b/features/steps/export_steps.py @@ -96,6 +96,11 @@ def create_directory(context, dir_name): def assert_dir_contains_files(context, dir_name, expected_files_json_list): actual_files = os.listdir(dir_name) expected_files = json.loads(expected_files_json_list) + + # sort to deal with inconsistent default file ordering on different OS's + actual_files.sort() + expected_files.sort() + assert actual_files == expected_files, [actual_files, expected_files] diff --git a/jrnl/plugins/markdown_exporter.py b/jrnl/plugins/markdown_exporter.py index 08527ae4..305a9d73 100644 --- a/jrnl/plugins/markdown_exporter.py +++ b/jrnl/plugins/markdown_exporter.py @@ -53,6 +53,10 @@ class MarkdownExporter(TextExporter): previous_line = line newbody = newbody + previous_line # add very last line + # make sure the export ends with a blank line + if previous_line not in ["\r", "\n", "\r\n", "\n\r"]: + newbody = newbody + os.linesep + if warn_on_heading_level is True: print( f"{WARNING_COLOR}WARNING{RESET_COLOR}: " diff --git a/jrnl/plugins/yaml_exporter.py b/jrnl/plugins/yaml_exporter.py index 911e607c..5af19585 100644 --- a/jrnl/plugins/yaml_exporter.py +++ b/jrnl/plugins/yaml_exporter.py @@ -64,6 +64,10 @@ class YAMLExporter(TextExporter): previous_line = line newbody = newbody + previous_line # add very last line + # make sure the export ends with a blank line + if previous_line not in ["\r", "\n", "\r\n", "\n\r"]: + newbody = newbody + os.linesep + if warn_on_heading_level is True: print( "{}WARNING{}: Headings increased past H6 on export - {} {}".format( |