From 3e70b2e2c900857a56d9fe8eabb6179dd5519789 Mon Sep 17 00:00:00 2001 From: Joscha Date: Mon, 6 Dec 2021 13:54:58 +0000 Subject: [PATCH] Print dates in a nicer format --- src/eval/date.rs | 31 ++++++++++++++++++++++++++++++- src/eval/error.rs | 9 ++++++++- src/files.rs | 4 ++++ src/files/commands.rs | 16 ++++++++++++++++ src/main.rs | 12 +++++++++--- 5 files changed, 67 insertions(+), 5 deletions(-) diff --git a/src/eval/date.rs b/src/eval/date.rs index ac3a3a8..15ddf6d 100644 --- a/src/eval/date.rs +++ b/src/eval/date.rs @@ -1,4 +1,6 @@ -use chrono::NaiveDate; +use std::fmt; + +use chrono::{Duration, NaiveDate}; use crate::files::commands::DoneDate; use crate::files::primitives::Time; @@ -16,6 +18,25 @@ pub struct Dates { times: Option, } +impl fmt::Display for Dates { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (start, end) = self.start_end(); + match self.start_end_time() { + Some((start_time, end_time)) if start == end && start_time == end_time => { + write!(f, "{} {}", start, start_time) + } + Some((start_time, end_time)) if start == end => { + write!(f, "{} {} -- {}", start, start_time, end_time) + } + Some((start_time, end_time)) => { + write!(f, "{} {} -- {} {}", start, start_time, end, end_time) + } + None if start == end => write!(f, "{}", start), + None => write!(f, "{} -- {}", start, end), + } + } +} + impl Dates { pub fn new(root: NaiveDate, other: NaiveDate) -> Self { Self { @@ -92,6 +113,14 @@ impl Dates { pub fn end_time(&self) -> Option