From 7ed866138e77568f88a4719bf8235e12b40915f7 Mon Sep 17 00:00:00 2001 From: n08i40k Date: Fri, 10 Oct 2025 01:30:30 +0400 Subject: [PATCH] feat(error): add error for unknown lesson type --- .../src/parser/error.rs | 3 +++ .../src/parser/mod.rs | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/providers/provider-engels-polytechnic/src/parser/error.rs b/providers/provider-engels-polytechnic/src/parser/error.rs index 2b8df5c..f015f88 100644 --- a/providers/provider-engels-polytechnic/src/parser/error.rs +++ b/providers/provider-engels-polytechnic/src/parser/error.rs @@ -17,6 +17,9 @@ pub enum Error { #[display("No start and end times matching the lesson (at {_0}) was found.")] LessonTimeNotFound(CellPos), + + #[display("Unknown lesson type `{type}` at {pos}")] + UnknownLessonType { pos: CellPos, r#type: String }, } pub type Result = core::result::Result; diff --git a/providers/provider-engels-polytechnic/src/parser/mod.rs b/providers/provider-engels-polytechnic/src/parser/mod.rs index a40312e..f4e5ef7 100644 --- a/providers/provider-engels-polytechnic/src/parser/mod.rs +++ b/providers/provider-engels-polytechnic/src/parser/mod.rs @@ -256,7 +256,7 @@ fn parse_lesson( name, mut subgroups, r#type: lesson_type, - } = parse_name_and_subgroups(&name)?; + } = parse_name_and_subgroups(&name, row, group_column)?; { let cabinets: Vec = parse_cabinets( @@ -363,7 +363,7 @@ struct ParsedLessonName { //noinspection GrazieInspection /// Getting the "pure" name of the lesson and list of teachers from the text of the lesson cell. -fn parse_name_and_subgroups(text: &str) -> Result { +fn parse_name_and_subgroups(text: &str, row: u32, column: u32) -> Result { // Части названия пары: // 1. Само название. // 2. Список преподавателей и подгрупп. @@ -475,12 +475,21 @@ fn parse_name_and_subgroups(text: &str) -> Result { if result.is_none() { #[cfg(not(debug_assertions))] sentry::capture_message( - &format!("Не удалось угадать тип пары '{}'!", extra), + &Error::UnknownLessonType { + r#type: extra.to_string(), + pos: CellPos::new(row, column), + }, sentry::Level::Warning, ); #[cfg(debug_assertions)] - log::warn!("Не удалось угадать тип пары '{}'!", extra); + log::warn!( + "{}", + Error::UnknownLessonType { + r#type: extra.to_string(), + pos: CellPos::new(row, column), + } + ); } result