From d84422a8dd60559ea1c80bb5a49760743d2a181b Mon Sep 17 00:00:00 2001 From: n08i40k Date: Sun, 18 Oct 2026 19:59:31 +0400 Subject: [PATCH] fix: missing space in day cell --- .../src/parser/mod.rs | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/providers/provider-engels-polytechnic/src/parser/mod.rs b/providers/provider-engels-polytechnic/src/parser/mod.rs index b2f193f..8e26bb0 100644 --- a/providers/provider-engels-polytechnic/src/parser/mod.rs +++ b/providers/provider-engels-polytechnic/src/parser/mod.rs @@ -100,20 +100,16 @@ fn parse_markup(worksheet: &WorkSheet) -> Result { } let (day_name, day_date) = { - let space_index = match day_full_name.find(' ') { - Some(index) => { - if index < 10 { - break; - } else { - index - } - } - None => break, + // Some spreadsheets omit the space between the weekday and date. + static DAY_RE: LazyLock = LazyLock::new(|| { + Regex::new(r"^([А-Яа-яЁё]+)\s*(\d{1,2}\.\d{1,2}\.\d{4})$").unwrap() + }); + let Some(captures) = DAY_RE.captures(&day_full_name) else { + break; }; - let name = day_full_name[..space_index].to_string(); - - let date_slice = &day_full_name[space_index + 1..]; + let name = captures[1].to_string(); + let date_slice = &captures[2]; let date = NaiveDate::parse_from_str(date_slice, "%d.%m.%Y") .map(|date| date.and_time(NaiveTime::default()).and_utc()) .ok();