From 98c1d266b190cc583f7c86be1d0ac04d1b875f8a Mon Sep 17 00:00:00 2001 From: "Dr. Matthias Ratajczak" Date: Thu, 15 Dec 2022 15:52:05 +0100 Subject: [PATCH] refactor main --- src/main.rs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 1f68032..919e326 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ mod extractor; -use anyhow::{anyhow, bail, Result}; +use anyhow::{anyhow, bail, Context, Result}; use scraper::{Html, Selector}; use extractor::Extractor; @@ -15,7 +15,7 @@ fn main() -> Result<()> { let extractor = Extractor::new(); for departure in get_departures(&html, &extractor) { - println!("{}", get_transport_line(departure)); + println!("{}", get_transport_line(departure)?); println!("{}", get_times(departure, &extractor)?); println!(); } @@ -24,11 +24,19 @@ fn main() -> Result<()> { fn get_times(departure: scraper::ElementRef, extractor: &Extractor) -> Result { let delay = extract_delay(departure, &extractor.delay); - for time_block in departure.select(&extractor.time).next().unwrap().children() { + for time_block in departure + .select(&extractor.time) + .next() + .context("extracting time block")? + .children() + { let value = time_block.value(); if value.is_text() { - let scheduled_time = value.as_text().unwrap().trim(); + let scheduled_time = value + .as_text() + .context("extracting text of scheduled time")? + .trim(); if !scheduled_time.is_empty() { let mut result = "Abfahrt: ".to_owned(); result.push_str(scheduled_time); @@ -48,9 +56,12 @@ fn get_departures<'a>(html: &'a Html, extractor: &'a Extractor) -> scraper::html html.select(&extractor.departure) } -fn get_transport_line(departure_block: scraper::ElementRef) -> &str { +fn get_transport_line(departure_block: scraper::ElementRef) -> Result<&str> { let val = departure_block.value(); - val.attr("data-filter").unwrap().trim() + Ok(val + .attr("data-filter") + .context("accessing 'data-filter'")? + .trim()) } fn query_server() -> Result {