From f45da68eda1b06ff3102683a0154a63a80f33819 Mon Sep 17 00:00:00 2001 From: argonarch Date: Fri, 3 Jan 2025 23:10:33 -0300 Subject: [PATCH 1/2] - Precalculated time variables and transformed to constants - Excluding DIENV files --- .gitignore | 5 +++++ src/task_report.rs | 54 +++++++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 2fbe177e..5133b9e4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,8 @@ target/** # End of https://www.toptal.com/developers/gitignore/api/rust tests/data + +# Direnv (Developer with Nixos) +flake.nix +flake.lock +.direnv/ diff --git a/src/task_report.rs b/src/task_report.rs index 74fb0eef..a56f29fe 100644 --- a/src/task_report.rs +++ b/src/task_report.rs @@ -29,53 +29,59 @@ pub fn vague_format_date_time(from_dt: NaiveDateTime, to_dt: NaiveDateTime, with "" }; - let year = 60 * 60 * 24 * 365; - let month = 60 * 60 * 24 * 30; - let week = 60 * 60 * 24 * 7; - let day = 60 * 60 * 24; - let hour = 60 * 60; - let minute = 60; + // year in sec = 60 * 60 * 24 * 365 + const YEAR: i64 = 31536000; + // month in sec = 60 * 60 * 24 * 30 + const MONTH: i64 = 2592000; + // week in sec = 60 * 60 * 24 * 7 + const WEEK: i64 = 604800; + // day in sec = 60 * 60 * 24 + const DAY: i64 = 86400; + // hour in sec = 60 * 60 + const HOUR: i64 = 3600; + // minture in sec = 60 + const MINUTE: i64 = 60; - if seconds >= 60 * 60 * 24 * 365 { + if seconds >= YEAR { return if with_remainder { - format!("{}{}y{}mo", minus, seconds / year, (seconds - year * (seconds / year)) / month) + format!("{}{}y{}mo", minus, seconds / YEAR, (seconds - YEAR * (seconds / YEAR)) / MONTH) } else { - format!("{}{}y", minus, seconds / year) + format!("{}{}y", minus, seconds / YEAR) }; } - if seconds >= 60 * 60 * 24 * 90 { + if seconds >= MONTH * 3 { return if with_remainder { - format!("{}{}mo{}w", minus, seconds / month, (seconds - month * (seconds / month)) / week) + format!("{}{}mo{}w", minus, seconds / MONTH, (seconds - MONTH * (seconds / MONTH)) / WEEK) } else { - format!("{}{}mo", minus, seconds / month) + format!("{}{}mo", minus, seconds / MONTH) }; } - if seconds >= 60 * 60 * 24 * 14 { + if seconds >= WEEK * 2 { return if with_remainder { - format!("{}{}w{}d", minus, seconds / week, (seconds - week * (seconds / week)) / day) + format!("{}{}w{}d", minus, seconds / WEEK, (seconds - WEEK * (seconds / WEEK)) / DAY) } else { - format!("{}{}w", minus, seconds / week) + format!("{}{}w", minus, seconds / WEEK) }; } - if seconds >= 60 * 60 * 24 { + if seconds >= DAY { return if with_remainder { - format!("{}{}d{}h", minus, seconds / day, (seconds - day * (seconds / day)) / hour) + format!("{}{}d{}h", minus, seconds / DAY, (seconds - DAY * (seconds / DAY)) / HOUR) } else { - format!("{}{}d", minus, seconds / day) + format!("{}{}d", minus, seconds / DAY) }; } - if seconds >= 60 * 60 { + if seconds >= HOUR { return if with_remainder { - format!("{}{}h{}min", minus, seconds / hour, (seconds - hour * (seconds / hour)) / minute) + format!("{}{}h{}min", minus, seconds / HOUR, (seconds - HOUR * (seconds / HOUR)) / MINUTE) } else { - format!("{}{}h", minus, seconds / hour) + format!("{}{}h", minus, seconds / HOUR) }; } - if seconds >= 60 { + if seconds >= MINUTE { return if with_remainder { - format!("{}{}min{}s", minus, seconds / minute, (seconds - minute * (seconds / minute))) + format!("{}{}min{}s", minus, seconds / MINUTE, (seconds - MINUTE * (seconds / MINUTE))) } else { - format!("{}{}min", minus, seconds / minute) + format!("{}{}min", minus, seconds / MINUTE) }; } format!("{}{}s", minus, seconds) From ec04c2dfe6a9646ce16629a19da733d72e068dae Mon Sep 17 00:00:00 2001 From: argonarch Date: Sat, 4 Jan 2025 03:42:00 -0300 Subject: [PATCH 2/2] Add multiplications instead of value --- src/task_report.rs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/task_report.rs b/src/task_report.rs index a56f29fe..d5f33794 100644 --- a/src/task_report.rs +++ b/src/task_report.rs @@ -29,17 +29,11 @@ pub fn vague_format_date_time(from_dt: NaiveDateTime, to_dt: NaiveDateTime, with "" }; - // year in sec = 60 * 60 * 24 * 365 - const YEAR: i64 = 31536000; - // month in sec = 60 * 60 * 24 * 30 - const MONTH: i64 = 2592000; - // week in sec = 60 * 60 * 24 * 7 - const WEEK: i64 = 604800; - // day in sec = 60 * 60 * 24 - const DAY: i64 = 86400; - // hour in sec = 60 * 60 - const HOUR: i64 = 3600; - // minture in sec = 60 + const YEAR: i64 = 60 * 60 * 24 * 365; + const MONTH: i64 = 60 * 60 * 24 * 30; + const WEEK: i64 = 60 * 60 * 24 * 7; + const DAY: i64 = 60 * 60 * 24; + const HOUR: i64 = 60 * 60; const MINUTE: i64 = 60; if seconds >= YEAR {