diff --git a/jrnl/DayOneJournal.py b/jrnl/DayOneJournal.py index dfcf01d6..a362754e 100644 --- a/jrnl/DayOneJournal.py +++ b/jrnl/DayOneJournal.py @@ -45,7 +45,7 @@ class DayOne(Journal.Journal): raw = dict_entry['Entry Text'] sep = re.search("\n|[\?!.]+ +\n?", raw) title, body = (raw[:sep.end()], raw[sep.end():]) if sep else (raw, "") - entry = Entry.Entry(self, date, title, body, starred=dict_entry["Starred"]) + entry = Entry.DayOneEntry(self, date, title, body, starred=dict_entry["Starred"]) entry.uuid = dict_entry["UUID"] entry.tags = [self.config['tagsymbols'][0] + tag for tag in dict_entry.get("Tags", [])] self.entries.append(entry) @@ -99,7 +99,7 @@ class DayOne(Journal.Journal): if m: if current_entry: entries.append(current_entry) - current_entry = Entry.Entry(self) + current_entry = Entry.DayOneEntry(self) current_entry.modified = False current_entry.uuid = m.group(1).lower() else: @@ -111,8 +111,10 @@ class DayOne(Journal.Journal): current_entry.title = line[date_length + 1:] current_entry.date = new_date except ValueError: + # strptime failed to parse a date, so assume this line is part of the journal + # entry if current_entry: - current_entry.body += line + "\n" + current_entry.body += line + "\n" # Append last entry if current_entry: diff --git a/jrnl/Entry.py b/jrnl/Entry.py index 66b32f6c..0f4cd8c1 100755 --- a/jrnl/Entry.py +++ b/jrnl/Entry.py @@ -7,7 +7,7 @@ import textwrap from datetime import datetime -class Entry: +class Entry(object): def __init__(self, journal, date=None, title="", body="", starred=False): self.journal = journal # Reference to journal mainly to access it's config self.date = date or datetime.now() @@ -109,3 +109,25 @@ class Entry: body=body, space=space ) + + +class DayOneEntry(Entry): + def __init__(self, journal, *args, **kwargs): + + # Make sure all our args are converted to kwargs before calling super + try: + kwargs['date'] = args[0] + kwargs['title'] = args[1] + kwargs['body'] = args[2] + kwargs['starred'] = args[3] + except IndexError: + pass + + # store extra day one data inside the entry. This should be a dict containing all the data that + # day one stores but which is not relevant to jrnl + self.extra_data = None + + if kwargs.get('extra_data'): + self.extra_data = kwargs.pop('extra_data') + + super(DayOneEntry, self).__init__(journal, **kwargs) \ No newline at end of file