From 92b4be130c19576200ae578b730465252a39e487 Mon Sep 17 00:00:00 2001 From: xeruf <27jf@pm.me> Date: Thu, 15 Aug 2024 13:16:14 +0300 Subject: [PATCH] feat(tasks): interpret plain numbers as minutes and strip prefixes --- src/tasks.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tasks.rs b/src/tasks.rs index 7b723cd..7ea2a19 100644 --- a/src/tasks.rs +++ b/src/tasks.rs @@ -702,7 +702,12 @@ impl Tasks { /// Returns false and prints a message if parsing failed pub(crate) fn track_from(&mut self, str: &str) -> bool { // Using two libraries for better exhaustiveness, see https://github.com/uutils/parse_datetime/issues/84 - match interim::parse_date_string(&str, Local::now(), interim::Dialect::Uk) { + let stripped = str.trim().trim_start_matches('+').trim_start_matches("in "); + if let Ok(num) = stripped.parse::() { + self.track_at(Timestamp::from(Timestamp::now().as_u64().saturating_add_signed(num * 60))); + return true + } + match interim::parse_date_string(stripped, Local::now(), interim::Dialect::Us) { Ok(date) => Some(date.to_utc()), Err(e) => { match parse_datetime::parse_datetime_at_date(Local::now(), str) {