#631 Escape data in square brackets

This commit is contained in:
Jonathan Wren 2019-08-10 13:35:03 -07:00
parent b84f862253
commit b260ff35b9
3 changed files with 19 additions and 5 deletions

View file

@ -1,3 +1,13 @@
2010-06-10 15:00 A life without chocolate is like a bad analogy. 2010-06-10 15:00 A life without chocolate is like a bad analogy.
2013-06-10 15:40 He said "[this] is the best time to be alive". 2013-06-10 15:40 He said "[this] is the best time to be alive".
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
augue et venenatis facilisis.
[2019-08-03 12:55] Some chat log or something
Suspendisse potenti. Sed dignissim sed nisl eu consequat. Aenean ante ex,
elementum ut interdum et, mattis eget lacus. In commodo nulla nec tellus
placerat, sed ultricies metus bibendum. Duis eget venenatis erat. In at dolor
dui.

View file

@ -43,15 +43,16 @@ Feature: Zapped bugs should stay dead.
| Hope to get a lot of traffic. | Hope to get a lot of traffic.
""" """
Scenario: Upgrade and parse journals with square brackets Scenario: Upgrade and parse journals with square brackets
Given we use the config "upgrade_from_195.json" Given we use the config "upgrade_from_195.json"
When we run "jrnl -2" and enter "Y" When we run "jrnl -9" and enter "Y"
Then the output should contain Then the output should contain
""" """
2010-06-10 15:00 A life without chocolate is like a bad analogy. 2010-06-10 15:00 A life without chocolate is like a bad analogy.
2013-06-10 15:40 He said "[this] is the best time to be alive". 2013-06-10 15:40 He said "[this] is the best time to be alive".
""" """
Then the journal should have 2 entries
Scenario: Integers in square brackets should not be read as dates Scenario: Integers in square brackets should not be read as dates
Given we use the config "brackets.yaml" Given we use the config "brackets.yaml"

View file

@ -283,6 +283,7 @@ class LegacyJournal(Journal):
# Initialise our current entry # Initialise our current entry
entries = [] entries = []
current_entry = None current_entry = None
new_date_format_regex = re.compile(r'(^\[[^\]]+\].*?$)')
for line in journal_txt.splitlines(): for line in journal_txt.splitlines():
line = line.rstrip() line = line.rstrip()
try: try:
@ -302,7 +303,9 @@ class LegacyJournal(Journal):
current_entry = Entry.Entry(self, date=new_date, text=line[date_length + 1:], starred=starred) current_entry = Entry.Entry(self, date=new_date, text=line[date_length + 1:], starred=starred)
except ValueError: except ValueError:
# Happens when we can't parse the start of the line as an date. # Happens when we can't parse the start of the line as an date.
# In this case, just append line to our body. # In this case, just append line to our body (after some
# escaping for the new format).
line = new_date_format_regex.sub(r' \1', line)
if current_entry: if current_entry:
current_entry.text += line + u"\n" current_entry.text += line + u"\n"