From 557ada4ee23af8aafdd751bbba3ab5f3f8d8d24b Mon Sep 17 00:00:00 2001 From: Ash Vollmer Date: Wed, 5 Aug 2026 21:41:48 +0200 Subject: [PATCH 1/2] fixed regex (kms) and added trim --- src/models.rs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/models.rs b/src/models.rs index a80fcf1..b281c10 100644 --- a/src/models.rs +++ b/src/models.rs @@ -39,24 +39,33 @@ impl Notice { pub fn get_validity_period(&mut self) { let re = Regex::new( - r"Gültig ab (\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}) bis (\d{2}\.\d{2}\.\d{4} \d{2}:\d{2})", + r"Gültig ab (\d{2}\.\d{2}\.\d{4} \d{2}:\d{2})(?: bis (\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}))?(?:
|\s)*", ) .unwrap(); + let format = "%d.%m.%Y %H:%M"; + if let Some(caps) = re.captures(&self.detail) { let valid_from = caps.get(1).unwrap().as_str(); - let valid_to = caps.get(1).unwrap().as_str(); - let format = "%d.%m.%Y %H:%M"; - - if let (Ok(start_dt), Ok(end_dt)) = ( - NaiveDateTime::parse_from_str(valid_from, format), - NaiveDateTime::parse_from_str(valid_to, format), - ) { + if let Ok(start_dt) = NaiveDateTime::parse_from_str(valid_from, format) { self.from = Some(start_dt); - self.to = Some(end_dt); + } + + if let Some(valid_to_match) = caps.get(2) { + let valid_to = valid_to_match.as_str(); + if let Ok(end_dt) = NaiveDateTime::parse_from_str(valid_to, format) { + self.to = Some(end_dt); + } + self.detail = re.replace(&self.detail, "").to_string(); + self.trim(); + } else { + self.to = None; } } else { println!("No validity period found in the text."); } } + pub fn trim(&mut self) { + self.detail = self.detail.replace("
", "\n"); + } } From 2ca94d8a02dc18da0d30377082c99dfc33fb54da Mon Sep 17 00:00:00 2001 From: Ash Vollmer Date: Wed, 5 Aug 2026 21:41:59 +0200 Subject: [PATCH 2/2] adjusted for changes in model --- src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index ac2946c..e7f84ec 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,7 +22,7 @@ impl EventHandler for Handler { dest_1: String::from("Hannover/Wettbergen"), dest_2: String::from("Hannover/Misburg"), headline: String::from("Linie 7 fährt erst bzw. bis Haltestelle In den Sieben Stücken"), - detail: String::from("Die Stadtbahnlinie 7 fährt während der Baumaßnahme erst ab beziehungsweise bis zur Haltestelle In den Sieben Stücken. Dort besteht die Umsteigemöglichkeit vom bzw. in den Schienenersatzverkehr (SEV) und die Stadtbahnlinien 3 und 13. An der Haltestelle Buchholz/Betriebshof ist kein Zustieg bzw. Ausstieg möglich."), + detail: String::from("Gültig ab 27.07.2026 07:00 bis 13.08.2026 02:59

Aufgrund von Bauarbeiten kommt es in der Zeit von Montag, 27.07.2026, ca. 07:00 Uhr bis Donnerstag, 13.08.2026, ca. 02:59 Uhr an der Haltestelle Hannover, Stadionbrücke zu Einschränkungen.

Die Haltestelle Hannover, Stadionbrücke der Linien in Fahrtrichtung:
• Linie 3 - Altwarmbüchen
• Linie 7 - Hannover/Misburg
• Linie 13 - Hannover/Fasanenkrug
• Linie 17 - Hannover Hauptbahnhof/ZOB
wird nicht bedient.

Wir bitten um Ihr Verständnis."), from: None, to: None, last_modified: String::from("2026-07-24T13:37:00Z"),