Commit Diff


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<EUActTitleParserError> for EUActParserError {
@@ -20,6 +24,18 @@ impl From<EUActTitleParserError> for EUActParserError 
     }
 }
 
+impl From<PreambleParserError> for EUActParserError {
+    fn from(value: PreambleParserError) -> Self {
+        EUActParserError::PreambleError(value)
+    }
+}
+
+impl From<EnactingTermParserError> 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,