From d5b6d559c351e994f9e838446bc3e2809d6f0c63 Mon Sep 17 00:00:00 2001 From: Manuel Ebert Date: Wed, 30 May 2012 18:12:10 +0200 Subject: [PATCH 1/5] New style display of posts --- jrnl/Entry.py | 20 +++++++++++--------- jrnl/Journal.py | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/jrnl/Entry.py b/jrnl/Entry.py index 08e7cac0..91a1bf14 100644 --- a/jrnl/Entry.py +++ b/jrnl/Entry.py @@ -19,18 +19,20 @@ class Entry: def __str__(self): date_str = self.date.strftime(self.journal.config['timeformat']) - body_wrapper = "\n" if self.body else "" if self.journal.config['linewrap']: - body = body_wrapper + textwrap.fill(self.body, self.journal.config['linewrap']) + title = textwrap.fill(date_str + " " + self.title, self.journal.config['linewrap']) + seplen = len(title.splitlines()[-1]) + body = textwrap.fill(self.body, self.journal.config['linewrap'], initial_indent="| ", subsequent_indent="| ") else: - body = body_wrapper + self.body.strip() - space = "\n" + title = date_str + " " + self.title + seplen = len(title) + body = self.body.strip() + separator = "\n" #+ "-"*seplen + "\n" - return "{date} {title} {body} {space}".format( - date=date_str, - title=self.title, - body=body, - space=space + return "{title}{sep}{body}\n".format( + title=title, + sep=separator if self.body else "", + body=body ) def __repr__(self): diff --git a/jrnl/Journal.py b/jrnl/Journal.py index b8c18651..d3983081 100644 --- a/jrnl/Journal.py +++ b/jrnl/Journal.py @@ -134,7 +134,7 @@ class Journal: def __str__(self): """Prettyprints the journal's entries""" - sep = "-"*60+"\n" + sep = "\n" pp = sep.join([str(e) for e in self.entries]) if self.config['highlight']: # highlight tags if self.search_tags: From fea171170ad3b5b0b6dfb0628d9b23d964713578 Mon Sep 17 00:00:00 2001 From: Manuel Ebert Date: Thu, 31 May 2012 11:22:34 +0200 Subject: [PATCH 2/5] Refactors prettyprinting into the pprint method, __str__ will only produce journal-file-ready strings again. --- jrnl/Entry.py | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/jrnl/Entry.py b/jrnl/Entry.py index 91a1bf14..2603be76 100644 --- a/jrnl/Entry.py +++ b/jrnl/Entry.py @@ -18,20 +18,37 @@ class Entry: self.tags = set(tags) def __str__(self): + """Returns a string representation of the entry to be written into a journal file.""" date_str = self.date.strftime(self.journal.config['timeformat']) - if self.journal.config['linewrap']: - title = textwrap.fill(date_str + " " + self.title, self.journal.config['linewrap']) - seplen = len(title.splitlines()[-1]) - body = textwrap.fill(self.body, self.journal.config['linewrap'], initial_indent="| ", subsequent_indent="| ") - else: - title = date_str + " " + self.title - seplen = len(title) - body = self.body.strip() - separator = "\n" #+ "-"*seplen + "\n" + title = date_str + " " + self.title + body = self.body.strip() return "{title}{sep}{body}\n".format( title=title, - sep=separator if self.body else "", + sep="\n" if self.body else "", + body=body + ) + + def pprint(self): + """Returns a pretty-printed version of the entry.""" + date_str = self.date.strftime(self.journal.config['timeformat']) + if self.journal.config['linewrap']: + title = textwrap.fill(date_str + " " + self.title, self.journal.config['linewrap']) + body = "\n".join([ + textwrap.fill(line+" ", + self.journal.config['linewrap'], + initial_indent="| ", + subsequent_indent="| ", + drop_whitespace=False) + for line in self.body.splitlines() + ]) + else: + title = date_str + " " + self.title + body = self.body.strip() + + return "{title}{sep}{body}\n".format( + title=title, + sep="\n" if self.body else "", body=body ) From e21cdd7e69aa4fe10e90eb0bfad36f9712e9c7d8 Mon Sep 17 00:00:00 2001 From: Manuel Ebert Date: Thu, 31 May 2012 11:22:54 +0200 Subject: [PATCH 3/5] Use Entry.pprint for display, str(Entry) for writing. --- jrnl/Journal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jrnl/Journal.py b/jrnl/Journal.py index d3983081..495a20ab 100644 --- a/jrnl/Journal.py +++ b/jrnl/Journal.py @@ -135,7 +135,7 @@ class Journal: def __str__(self): """Prettyprints the journal's entries""" sep = "\n" - pp = sep.join([str(e) for e in self.entries]) + pp = sep.join([e.pprint() for e in self.entries]) if self.config['highlight']: # highlight tags if self.search_tags: for tag in self.search_tags: From 7a8b847bd7970945777ab3d711aacd67b2ac9318 Mon Sep 17 00:00:00 2001 From: Manuel Ebert Date: Thu, 31 May 2012 11:33:28 +0200 Subject: [PATCH 4/5] Suppress empty bodies in prettyprinting --- jrnl/Entry.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/jrnl/Entry.py b/jrnl/Entry.py index 2603be76..53965eb2 100644 --- a/jrnl/Entry.py +++ b/jrnl/Entry.py @@ -46,10 +46,13 @@ class Entry: title = date_str + " " + self.title body = self.body.strip() + # Suppress bodies that are just blanks and new lines. + has_body = len(self.body) > 20 or not all(char in (" ", "\n") for char in self.body) + return "{title}{sep}{body}\n".format( title=title, - sep="\n" if self.body else "", - body=body + sep="\n" if has_body else "", + body=body if has_body else "", ) def __repr__(self): From a4e68315488971de78b68e9c78d9f50729f568b4 Mon Sep 17 00:00:00 2001 From: Manuel Ebert Date: Thu, 31 May 2012 11:37:02 +0200 Subject: [PATCH 5/5] Strips blank lines at the end of Entry bodies when prettyprinting. --- jrnl/Entry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jrnl/Entry.py b/jrnl/Entry.py index 53965eb2..ea0a2e2d 100644 --- a/jrnl/Entry.py +++ b/jrnl/Entry.py @@ -40,7 +40,7 @@ class Entry: initial_indent="| ", subsequent_indent="| ", drop_whitespace=False) - for line in self.body.splitlines() + for line in self.body.strip().splitlines() ]) else: title = date_str + " " + self.title