Parse a 5-field cron expression.
(expr: &str)
| 53 | impl CronExpr { |
| 54 | /// Parse a 5-field cron expression. |
| 55 | pub fn parse(expr: &str) -> crate::Result<Self> { |
| 56 | let fields: Vec<&str> = expr.split_whitespace().collect(); |
| 57 | if fields.len() != 5 { |
| 58 | return Err(crate::Error::BadRequest { |
| 59 | detail: format!( |
| 60 | "expected 5 fields (minute hour dom month dow), got {}", |
| 61 | fields.len() |
| 62 | ), |
| 63 | }); |
| 64 | } |
| 65 | |
| 66 | Ok(Self { |
| 67 | minutes: parse_field(fields[0], 0, 59)?, |
| 68 | hours: parse_field(fields[1], 0, 23)?, |
| 69 | days_of_month: parse_field(fields[2], 1, 31)?, |
| 70 | months: parse_field(fields[3], 1, 12)?, |
| 71 | days_of_week: parse_field(fields[4], 0, 6)?, |
| 72 | }) |
| 73 | } |
| 74 | |
| 75 | /// Check if the given wall-clock time matches this cron expression. |
| 76 | pub fn matches(&self, minute: u8, hour: u8, day: u8, month: u8, weekday: u8) -> bool { |
no test coverage detected