|
7 | 7 | MHKind, |
8 | 8 | }, |
9 | 9 | anyhow::{ |
10 | | - anyhow, |
11 | 10 | Result, |
| 11 | + anyhow, |
12 | 12 | }, |
13 | 13 | chrono::{ |
14 | | - naive::NaiveTime, |
15 | 14 | DateTime, |
16 | 15 | Datelike, |
17 | 16 | Duration, |
18 | 17 | Utc, |
| 18 | + naive::NaiveTime, |
19 | 19 | }, |
20 | 20 | chrono_tz::Tz, |
21 | 21 | std::{ |
|
24 | 24 | str::FromStr, |
25 | 25 | }, |
26 | 26 | winnow::{ |
| 27 | + ModalResult, |
| 28 | + Parser, |
27 | 29 | combinator::{ |
28 | 30 | alt, |
29 | 31 | separated, |
|
34 | 36 | take, |
35 | 37 | take_till, |
36 | 38 | }, |
37 | | - ModalResult, |
38 | | - Parser, |
39 | 39 | }, |
40 | 40 | }; |
41 | 41 |
|
@@ -109,7 +109,7 @@ impl MarketSchedule { |
109 | 109 | } |
110 | 110 | } |
111 | 111 |
|
112 | | -fn market_schedule_parser<'s>(input: &mut &'s str) -> ModalResult<MarketSchedule> { |
| 112 | +fn market_schedule_parser(input: &mut &str) -> ModalResult<MarketSchedule> { |
113 | 113 | seq!( |
114 | 114 | MarketSchedule { |
115 | 115 | timezone: take_till(0.., ';').verify_map(|s| Tz::from_str(s).ok()), |
@@ -157,13 +157,13 @@ pub struct HolidayDaySchedule { |
157 | 157 | pub kind: ScheduleDayKind, |
158 | 158 | } |
159 | 159 |
|
160 | | -fn two_digit_parser<'s>(input: &mut &'s str) -> ModalResult<u32> { |
| 160 | +fn two_digit_parser(input: &mut &str) -> ModalResult<u32> { |
161 | 161 | take(2usize) |
162 | 162 | .verify_map(|s| u32::from_str(s).ok()) |
163 | 163 | .parse_next(input) |
164 | 164 | } |
165 | 165 |
|
166 | | -fn holiday_day_schedule_parser<'s>(input: &mut &'s str) -> ModalResult<HolidayDaySchedule> { |
| 166 | +fn holiday_day_schedule_parser(input: &mut &str) -> ModalResult<HolidayDaySchedule> { |
167 | 167 | // day and month are not validated to be correct dates |
168 | 168 | // if they are invalid, it will be ignored since there |
169 | 169 | // are no real dates that match the invalid input |
@@ -454,40 +454,67 @@ mod tests { |
454 | 454 | let format = "%Y-%m-%d %H:%M"; |
455 | 455 |
|
456 | 456 | // Date no match |
457 | | - assert!(market_schedule |
458 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2023-11-20 05:30", format)?.and_utc())); |
| 457 | + assert!( |
| 458 | + market_schedule.can_publish_at( |
| 459 | + &NaiveDateTime::parse_from_str("2023-11-20 05:30", format)?.and_utc() |
| 460 | + ) |
| 461 | + ); |
459 | 462 |
|
460 | 463 | // Date match before range |
461 | | - assert!(!market_schedule |
462 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2023-04-22 08:59", format)?.and_utc())); |
| 464 | + assert!( |
| 465 | + !market_schedule.can_publish_at( |
| 466 | + &NaiveDateTime::parse_from_str("2023-04-22 08:59", format)?.and_utc() |
| 467 | + ) |
| 468 | + ); |
463 | 469 |
|
464 | 470 | // Date match at start of range |
465 | | - assert!(market_schedule |
466 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2023-04-22 09:00", format)?.and_utc())); |
| 471 | + assert!( |
| 472 | + market_schedule.can_publish_at( |
| 473 | + &NaiveDateTime::parse_from_str("2023-04-22 09:00", format)?.and_utc() |
| 474 | + ) |
| 475 | + ); |
467 | 476 |
|
468 | 477 | // Date match in range |
469 | | - assert!(market_schedule |
470 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2023-04-22 12:00", format)?.and_utc())); |
| 478 | + assert!( |
| 479 | + market_schedule.can_publish_at( |
| 480 | + &NaiveDateTime::parse_from_str("2023-04-22 12:00", format)?.and_utc() |
| 481 | + ) |
| 482 | + ); |
471 | 483 |
|
472 | 484 | // Date match at end of range |
473 | | - assert!(market_schedule |
474 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2023-04-22 17:00", format)?.and_utc())); |
| 485 | + assert!( |
| 486 | + market_schedule.can_publish_at( |
| 487 | + &NaiveDateTime::parse_from_str("2023-04-22 17:00", format)?.and_utc() |
| 488 | + ) |
| 489 | + ); |
475 | 490 |
|
476 | 491 | // Date match after range |
477 | | - assert!(!market_schedule |
478 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2023-04-22 17:01", format)?.and_utc())); |
| 492 | + assert!( |
| 493 | + !market_schedule.can_publish_at( |
| 494 | + &NaiveDateTime::parse_from_str("2023-04-22 17:01", format)?.and_utc() |
| 495 | + ) |
| 496 | + ); |
479 | 497 |
|
480 | 498 | // Date 2400 range |
481 | | - assert!(market_schedule |
482 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2023-12-31 23:59", format)?.and_utc())); |
| 499 | + assert!( |
| 500 | + market_schedule.can_publish_at( |
| 501 | + &NaiveDateTime::parse_from_str("2023-12-31 23:59", format)?.and_utc() |
| 502 | + ) |
| 503 | + ); |
483 | 504 |
|
484 | 505 | // Sunday |
485 | | - assert!(market_schedule |
486 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2024-04-14 12:00", format)?.and_utc())); |
| 506 | + assert!( |
| 507 | + market_schedule.can_publish_at( |
| 508 | + &NaiveDateTime::parse_from_str("2024-04-14 12:00", format)?.and_utc() |
| 509 | + ) |
| 510 | + ); |
487 | 511 |
|
488 | 512 | // Monday |
489 | | - assert!(market_schedule |
490 | | - .can_publish_at(&NaiveDateTime::parse_from_str("2024-04-15 12:00", format)?.and_utc())); |
| 513 | + assert!( |
| 514 | + market_schedule.can_publish_at( |
| 515 | + &NaiveDateTime::parse_from_str("2024-04-15 12:00", format)?.and_utc() |
| 516 | + ) |
| 517 | + ); |
491 | 518 |
|
492 | 519 | Ok(()) |
493 | 520 | } |
|
0 commit comments