mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 00:28:31 +02:00
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>
This commit is contained in:
parent
62ea1e2b23
commit
68ad5c0c1a
5 changed files with 52 additions and 1 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -42,11 +42,12 @@ obj
|
|||
# virtaulenv
|
||||
env/
|
||||
env*/
|
||||
venv*/
|
||||
|
||||
# PyCharm Project files
|
||||
.idea/
|
||||
|
||||
# export testing director
|
||||
# export testing directories
|
||||
exp/
|
||||
|
||||
_extras/
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
||||
|
|
|
@ -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}: "
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Add table
Reference in a new issue