mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-20 13:08:31 +02:00
[#696] supporting little-endian date format (e.g. DD/MM/YYYY)
Fix parsing Journals using a little-endian date format
This commit is contained in:
commit
4302cf2a81
7 changed files with 92 additions and 1 deletions
35
features/custom_dates.feature
Normal file
35
features/custom_dates.feature
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
Feature: Reading and writing to journal with custom date formats
|
||||||
|
|
||||||
|
Scenario: Loading a sample journal
|
||||||
|
Given we use the config "little_endian_dates.yaml"
|
||||||
|
When we run "jrnl -n 2"
|
||||||
|
Then we should get no error
|
||||||
|
And the output should be
|
||||||
|
"""
|
||||||
|
09.06.2013 15:39 My first entry.
|
||||||
|
| Everything is alright
|
||||||
|
|
||||||
|
10.06.2013 15:40 Life is good.
|
||||||
|
| But I'm better.
|
||||||
|
"""
|
||||||
|
|
||||||
|
Scenario: Writing an entry from command line
|
||||||
|
Given we use the config "little_endian_dates.yaml"
|
||||||
|
When we run "jrnl 2013-07-12: A cold and stormy day. I ate crisps on the sofa."
|
||||||
|
Then we should see the message "Entry added"
|
||||||
|
When we run "jrnl -n 1"
|
||||||
|
Then the output should contain "12.07.2013 09:00 A cold and stormy day."
|
||||||
|
|
||||||
|
Scenario: Filtering for dates
|
||||||
|
Given we use the config "little_endian_dates.yaml"
|
||||||
|
When we run "jrnl -on 2013-06-10 --short"
|
||||||
|
Then the output should be "10.06.2013 15:40 Life is good."
|
||||||
|
When we run "jrnl -on 'june 6 2013' --short"
|
||||||
|
Then the output should be "10.06.2013 15:40 Life is good."
|
||||||
|
|
||||||
|
Scenario: Writing an entry at the prompt
|
||||||
|
Given we use the config "little_endian_dates.yaml"
|
||||||
|
When we run "jrnl" and enter "2013-05-10: I saw Elvis. He's alive."
|
||||||
|
Then we should get no error
|
||||||
|
And the journal should contain "[10.05.2013 09:00] I saw Elvis."
|
||||||
|
And the journal should contain "He's alive."
|
12
features/data/configs/little_endian_dates.yaml
Normal file
12
features/data/configs/little_endian_dates.yaml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
default_hour: 9
|
||||||
|
default_minute: 0
|
||||||
|
editor: ""
|
||||||
|
encrypt: false
|
||||||
|
highlight: true
|
||||||
|
journals:
|
||||||
|
default: features/journals/little_endian_dates.journal
|
||||||
|
linewrap: 80
|
||||||
|
tagsymbols: "@"
|
||||||
|
template: false
|
||||||
|
timeformat: "%d.%m.%Y %H:%M"
|
||||||
|
indent_character: "|"
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"default_hour": 9,
|
||||||
|
"timeformat": "%d.%m.%Y %H:%M",
|
||||||
|
"linewrap": 80,
|
||||||
|
"encrypt": false,
|
||||||
|
"editor": "",
|
||||||
|
"default_minute": 0,
|
||||||
|
"highlight": true,
|
||||||
|
"journals": {"default": "features/journals/simple_jrnl-1-9-5_little_endian_dates.journal"},
|
||||||
|
"tagsymbols": "@"
|
||||||
|
}
|
5
features/data/journals/little_endian_dates.journal
Normal file
5
features/data/journals/little_endian_dates.journal
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[09.06.2013 15:39] My first entry.
|
||||||
|
Everything is alright
|
||||||
|
|
||||||
|
[10.06.2013 15:40] Life is good.
|
||||||
|
But I'm better.
|
|
@ -0,0 +1,13 @@
|
||||||
|
10.06.2010 15:00 A life without chocolate is like a bad analogy.
|
||||||
|
|
||||||
|
10.06.2013 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.
|
||||||
|
|
||||||
|
[03.08.2019 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.
|
|
@ -21,3 +21,14 @@ Feature: Upgrading Journals from 1.x.x to 2.x.x
|
||||||
"""
|
"""
|
||||||
Then the output should contain "Password"
|
Then the output should contain "Password"
|
||||||
and the output should contain "2013-06-10 15:40 Life is good"
|
and the output should contain "2013-06-10 15:40 Life is good"
|
||||||
|
|
||||||
|
Scenario: Upgrade and parse journals with little endian date format
|
||||||
|
Given we use the config "upgrade_from_195_little_endian_dates.json"
|
||||||
|
When we run "jrnl -9" and enter "Y"
|
||||||
|
Then the output should contain
|
||||||
|
"""
|
||||||
|
10.06.2010 15:00 A life without chocolate is like a bad analogy.
|
||||||
|
|
||||||
|
10.06.2013 15:40 He said "[this] is the best time to be alive".
|
||||||
|
"""
|
||||||
|
Then the journal should have 2 entries
|
||||||
|
|
|
@ -119,7 +119,11 @@ class Journal:
|
||||||
last_entry_pos = 0
|
last_entry_pos = 0
|
||||||
for match in date_blob_re.finditer(journal_txt):
|
for match in date_blob_re.finditer(journal_txt):
|
||||||
date_blob = match.groups()[0]
|
date_blob = match.groups()[0]
|
||||||
|
try:
|
||||||
|
new_date = datetime.strptime(date_blob, self.config["timeformat"])
|
||||||
|
except ValueError:
|
||||||
new_date = time.parse(date_blob)
|
new_date = time.parse(date_blob)
|
||||||
|
|
||||||
if new_date:
|
if new_date:
|
||||||
if entries:
|
if entries:
|
||||||
entries[-1].text = journal_txt[last_entry_pos:match.start()]
|
entries[-1].text = journal_txt[last_entry_pos:match.start()]
|
||||||
|
|
Loading…
Add table
Reference in a new issue