diff --git a/Cargo.lock b/Cargo.lock index 649d0d6..ec5e584 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -144,7 +144,7 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "parse_datetime" -version = "0.7.0" +version = "0.8.0" dependencies = [ "chrono", "nom", diff --git a/Cargo.toml b/Cargo.toml index e1f3133..1c75c90 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "parse_datetime" description = "parsing human-readable time strings and converting them to a DateTime" -version = "0.7.0" +version = "0.8.0" edition = "2021" license = "MIT" repository = "https://github.com/uutils/parse_datetime" diff --git a/src/lib.rs b/src/lib.rs index fc3e7df..f6148be 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -240,14 +240,13 @@ pub fn parse_datetime_at_date + Clone>( // reference date could be parsed, then try to parse the entire // string as a time delta. If no time delta could be parsed, // return an error. - let (ref_date, n) = match parse_reference_date(date, s.as_ref()) { - Some((ref_date, n)) => (ref_date, n), - None => { - let tz = TimeZone::from_offset(date.offset()); - match date.naive_local().and_local_timezone(tz) { - MappedLocalTime::Single(ref_date) => (ref_date, 0), - _ => return Err(ParseDateTimeError::InvalidInput), - } + let (ref_date, n) = if let Some((ref_date, n)) = parse_reference_date(date, s.as_ref()) { + (ref_date, n) + } else { + let tz = TimeZone::from_offset(date.offset()); + match date.naive_local().and_local_timezone(tz) { + MappedLocalTime::Single(ref_date) => (ref_date, 0), + _ => return Err(ParseDateTimeError::InvalidInput), } }; parse_relative_time_at_date(ref_date, &s.as_ref()[n..]) @@ -619,12 +618,12 @@ mod tests { for offset in offsets { // positive offset let time = Utc.timestamp_opt(offset, 0).unwrap(); - let dt = parse_datetime(format!("@{}", offset)); + let dt = parse_datetime(format!("@{offset}")); assert_eq!(dt.unwrap(), time); // negative offset let time = Utc.timestamp_opt(-offset, 0).unwrap(); - let dt = parse_datetime(format!("@-{}", offset)); + let dt = parse_datetime(format!("@-{offset}")); assert_eq!(dt.unwrap(), time); } } @@ -642,7 +641,7 @@ mod tests { let parsed_time = parse_datetime_at_date(test_date, "9:04:30 PM +0530") .unwrap() .timestamp(); - assert_eq!(parsed_time, 1709480070) + assert_eq!(parsed_time, 1709480070); } } /// Used to test example code presented in the README. @@ -862,9 +861,10 @@ mod tests { let now = Local::now(); let midnight = NaiveTime::from_hms_opt(0, 0, 0).unwrap(); let today = now.weekday(); - let midnight_today = match now.with_time(midnight) { - MappedLocalTime::Single(t) => t, - _ => panic!(), + let midnight_today = if let MappedLocalTime::Single(t) = now.with_time(midnight) { + t + } else { + panic!() }; for (s, day) in [ @@ -877,7 +877,7 @@ mod tests { ("saturday", Weekday::Sat), ] { let actual = crate::parse_datetime(s).unwrap(); - let delta = Days::new(day.days_since(today) as u64); + let delta = Days::new(u64::from(day.days_since(today))); let expected = midnight_today.checked_add_days(delta).unwrap(); assert_eq!(actual, expected); } diff --git a/src/parse_time_only_str.rs b/src/parse_time_only_str.rs index ef0f814..119c2e6 100644 --- a/src/parse_time_only_str.rs +++ b/src/parse_time_only_str.rs @@ -140,7 +140,7 @@ mod tests { let parsed_time = parse_time_only(get_test_date(), "21:04") .unwrap() .timestamp(); - assert_eq!(parsed_time, 1709499840) + assert_eq!(parsed_time, 1709499840); } #[test] @@ -187,7 +187,7 @@ mod tests { let parsed_time = parse_time_only(get_test_date(), "21:04:30") .unwrap() .timestamp(); - assert_eq!(parsed_time, 1709499870) + assert_eq!(parsed_time, 1709499870); } #[test] @@ -196,7 +196,7 @@ mod tests { let parsed_time = parse_time_only(get_test_date(), "21:04:30 +0530") .unwrap() .timestamp(); - assert_eq!(parsed_time, 1709480070) + assert_eq!(parsed_time, 1709480070); } #[test] @@ -205,6 +205,6 @@ mod tests { let parsed_time = parse_time_only(get_test_date(), "9:04:00 PM") .unwrap() .timestamp(); - assert_eq!(parsed_time, 1709499840) + assert_eq!(parsed_time, 1709499840); } } diff --git a/src/parse_weekday.rs b/src/parse_weekday.rs index 58e3180..d0ee4e8 100644 --- a/src/parse_weekday.rs +++ b/src/parse_weekday.rs @@ -64,9 +64,9 @@ mod tests { for (name, weekday) in days { assert_eq!(parse_weekday(name), Some(weekday)); - assert_eq!(parse_weekday(&format!(" {}", name)), Some(weekday)); - assert_eq!(parse_weekday(&format!(" {} ", name)), Some(weekday)); - assert_eq!(parse_weekday(&format!("{} ", name)), Some(weekday)); + assert_eq!(parse_weekday(&format!(" {name}")), Some(weekday)); + assert_eq!(parse_weekday(&format!(" {name} ")), Some(weekday)); + assert_eq!(parse_weekday(&format!("{name} ")), Some(weekday)); let (left, right) = name.split_at(1); let (test_str1, test_str2) = (