Simplify DoneDate when formatting
This commit is contained in:
parent
20fc4bd3cc
commit
170e291ec5
4 changed files with 39 additions and 28 deletions
|
|
@ -27,6 +27,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- When saving...
|
- When saving...
|
||||||
- Unchanged files are no longer overwritten
|
- Unchanged files are no longer overwritten
|
||||||
- Commands are no longer reordered
|
- Commands are no longer reordered
|
||||||
|
- Done and cancel dates are simplified
|
||||||
- Always prints import-based path, not absolute path
|
- Always prints import-based path, not absolute path
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
||||||
|
|
@ -149,32 +149,16 @@ impl From<DoneDate> for Dates {
|
||||||
|
|
||||||
impl From<Dates> for DoneDate {
|
impl From<Dates> for DoneDate {
|
||||||
fn from(dates: Dates) -> Self {
|
fn from(dates: Dates) -> Self {
|
||||||
if dates.root == dates.other {
|
let (root, other) = dates.dates();
|
||||||
match dates.times {
|
match dates.times() {
|
||||||
Some(times) if times.root == times.other => Self::DateTime {
|
Some((root_time, other_time)) => Self::DateTimeToDateTime {
|
||||||
root: dates.root,
|
root,
|
||||||
root_time: times.root,
|
root_time,
|
||||||
|
other,
|
||||||
|
other_time,
|
||||||
},
|
},
|
||||||
Some(times) => Self::DateTimeToTime {
|
None => Self::DateToDate { root, other },
|
||||||
root: dates.root,
|
|
||||||
root_time: times.root,
|
|
||||||
other_time: times.other,
|
|
||||||
},
|
|
||||||
None => Self::Date { root: dates.root },
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
match dates.times {
|
|
||||||
Some(times) => Self::DateTimeToDateTime {
|
|
||||||
root: dates.root,
|
|
||||||
root_time: times.root,
|
|
||||||
other: dates.other,
|
|
||||||
other_time: times.other,
|
|
||||||
},
|
|
||||||
None => Self::DateToDate {
|
|
||||||
root: dates.root,
|
|
||||||
other: dates.other,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
.simplified()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -307,6 +307,33 @@ impl DoneDate {
|
||||||
DoneDate::DateTimeToDateTime { root, .. } => root,
|
DoneDate::DateTimeToDateTime { root, .. } => root,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Remove redundancies like the same date or time specified twice.
|
||||||
|
pub fn simplified(self) -> Self {
|
||||||
|
let result = match self {
|
||||||
|
Self::DateToDate { root, other } if root == other => Self::Date { root },
|
||||||
|
Self::DateTimeToDateTime {
|
||||||
|
root,
|
||||||
|
root_time,
|
||||||
|
other,
|
||||||
|
other_time,
|
||||||
|
} if root == other => Self::DateTimeToTime {
|
||||||
|
root,
|
||||||
|
root_time,
|
||||||
|
other_time,
|
||||||
|
},
|
||||||
|
other => other,
|
||||||
|
};
|
||||||
|
|
||||||
|
match result {
|
||||||
|
Self::DateTimeToTime {
|
||||||
|
root,
|
||||||
|
root_time,
|
||||||
|
other_time,
|
||||||
|
} if root_time == other_time => Self::DateTime { root, root_time },
|
||||||
|
other => other,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
|
||||||
|
|
@ -239,8 +239,7 @@ impl fmt::Display for Statement {
|
||||||
|
|
||||||
impl fmt::Display for DoneDate {
|
impl fmt::Display for DoneDate {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
// TODO Remove redundant dates
|
match self.simplified() {
|
||||||
match self {
|
|
||||||
DoneDate::Date { root } => write!(f, "{}", root),
|
DoneDate::Date { root } => write!(f, "{}", root),
|
||||||
DoneDate::DateTime { root, root_time } => write!(f, "{} {}", root, root_time),
|
DoneDate::DateTime { root, root_time } => write!(f, "{} {}", root, root_time),
|
||||||
DoneDate::DateToDate { root, other } => write!(f, "{} -- {}", root, other),
|
DoneDate::DateToDate { root, other } => write!(f, "{} -- {}", root, other),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue