From 45b9d9f09af15ab080d7a6b35ee07d58c9b05052 Mon Sep 17 00:00:00 2001 From: Jeffrey Finkelstein Date: Thu, 30 Jan 2025 21:32:47 -0500 Subject: [PATCH] Allow empty string in parse_relative_time_at_date Allow the empty string when parsing the relative time in `parse_relative_time_at_date()`. The empty string represents zero time delta. --- src/parse_relative_time.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/parse_relative_time.rs b/src/parse_relative_time.rs index de9b293..c3797fd 100644 --- a/src/parse_relative_time.rs +++ b/src/parse_relative_time.rs @@ -20,6 +20,8 @@ const DAYS_PER_MONTH: [u32; 12] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 3 /// * `date` - A `Date` instance representing the base date for the calculation /// * `s` - A string slice representing the relative time. /// +/// If `s` is empty, the `date` is returned as-is. +/// /// # Supported formats /// /// The function supports the following formats for relative time: @@ -51,6 +53,10 @@ pub fn parse_relative_time_at_date( mut datetime: DateTime, s: &str, ) -> Result, ParseDateTimeError> { + let s = s.trim(); + if s.is_empty() { + return Ok(datetime); + } let time_pattern: Regex = Regex::new( r"(?x) (?:(?P[-+]?\d*)\s*)? @@ -278,6 +284,12 @@ mod tests { Ok(parsed - now) } + #[test] + fn test_empty_string() { + let now = Utc::now(); + assert_eq!(parse_relative_time_at_date(now, "").unwrap(), now); + } + #[test] fn test_years() { let now = Utc::now();