commit a39721dfc8cde9a3741a31faec4f757e89d227fb from: Romain VINCENT date: Sun Jan 18 14:04:41 2026 UTC Add Error management to EUAct Parser. commit - 98dc42daff9085d15cc1c01d879e678ad35dec78 commit + a39721dfc8cde9a3741a31faec4f757e89d227fb blob - 56bf9cb23f9bd86295b26e92b8cfa2fd1689225e blob + 92a722d1a2fe4e76b4037c534232dce45ee6684f --- eur-lex-scraper/src/parsers/act.rs +++ eur-lex-scraper/src/parsers/act.rs @@ -1,8 +1,8 @@ use crate::models::acts::EUAct; -use crate::parsers::enacting_terms::EnactingTermParser; use crate::parsers::{ act_title::{EUActTileParser, EUActTitleParserError}, - preamble::PreambleParser, + enacting_terms::{EnactingTermParser, EnactingTermParserError}, + preamble::{PreambleParser, PreambleParserError}, }; use scraper::{Html, Selector}; @@ -12,6 +12,10 @@ use thiserror::Error; pub enum EUActParserError { #[error("error while parsing title: {0}")] TitleError(EUActTitleParserError), + #[error("error while parsing preamble: {0}")] + PreambleError(PreambleParserError), + #[error("error while parsing enacting terms: {0}")] + EnactingTermsError(EnactingTermParserError), } impl From for EUActParserError { @@ -20,6 +24,18 @@ impl From for EUActParserError } } +impl From for EUActParserError { + fn from(value: PreambleParserError) -> Self { + EUActParserError::PreambleError(value) + } +} + +impl From for EUActParserError { + fn from(value: EnactingTermParserError) -> Self { + EUActParserError::EnactingTermsError(value) + } +} + pub struct EUActParser {} impl EUActParser { @@ -36,13 +52,13 @@ impl EUActParser { // Get preamble let preamble_selector = Selector::parse("#pbl_1").unwrap(); let preamble_section = act_html.select(&preamble_selector).next().unwrap(); - let preamble = PreambleParser::parse(preamble_section).unwrap(); + let preamble = PreambleParser::parse(preamble_section)?; // ///////////// // Get enacting terms let enacting_terms_selector = Selector::parse("#enc_1").unwrap(); let enacting_terms_section = act_html.select(&enacting_terms_selector).next().unwrap(); - let enacting_terms = EnactingTermParser::parse(enacting_terms_section).unwrap(); + let enacting_terms = EnactingTermParser::parse(enacting_terms_section)?; Ok(EUAct { title,