commit 4563b43dc46cf12d4ea4e82321a75a037e81d5c9 from: Romain VINCENT date: Sat Jan 17 09:03:27 2026 UTC Implement getter and setter for Article. Will be needed in the future to perform validity check on values. commit - fa3ca37ff9b9e995cf8dd43e6c2aea9d3c7c0f34 commit + 4563b43dc46cf12d4ea4e82321a75a037e81d5c9 blob - 2b17d016d325384df22aeedde464d4682028a58c blob + de9cd82ed7dea22d3523df97e9c74e45021c1c24 --- eur-lex-scraper/src/models/articles.rs +++ eur-lex-scraper/src/models/articles.rs @@ -2,9 +2,9 @@ use crate::models::enacting_terms::Item; #[derive(Clone, Debug, Default, PartialEq, Eq)] pub struct Article { - pub title: String, - pub number: u32, - pub text: String, + title: String, + number: u32, + text: String, } impl Into for Article { @@ -12,3 +12,24 @@ impl Into for Article { Item::Article(self) } } + +impl Article { + pub fn set_title(&mut self, title: String) { + self.title = title + } + pub fn get_title(&self) -> &str { + &self.title + } + pub fn set_number(&mut self, number: u32) { + self.number = number + } + pub fn get_number(&self) -> u32 { + self.number + } + pub fn set_text(&mut self, text: String) { + self.text = text + } + pub fn get_text(&self) -> &str { + &self.text + } +} blob - d433b9cd088a8ce5c945d648a1da87d176b28850 blob + f88578d44278fb36d2970b50c7bf419fa2786329 --- eur-lex-scraper/src/parsers/article.rs +++ eur-lex-scraper/src/parsers/article.rs @@ -32,11 +32,10 @@ impl ArticleParser { None => return Err(ArticleParserError::TitleError), }; let text = html2text(&element.inner_html()); - let article = Article { - title, - number, - text, - }; + let mut article = Article::default(); + article.set_title(title); + article.set_number(number); + article.set_text(text); Ok(article) } } @@ -71,11 +70,10 @@ mod tests { let selector = Selector::parse("[id^=art_]").unwrap(); let element_ref = html.select(&selector).next().unwrap(); let article_left = ArticleParser::parse(element_ref).unwrap(); - let article_right = Article { - title: "AI literacy".to_string(), - number: 4, - text: html2text(&element_ref.inner_html()), - }; + let mut article_right = Article::default(); + article_right.set_title("AI literacy".to_string()); + article_right.set_number(4); + article_right.set_text(html2text(&element_ref.inner_html())); assert_eq!(article_left, article_right) } #[test] @@ -99,8 +97,7 @@ mod tests { #[test] fn parsing_article_no_id_return_no_id_attribute_error() { let html = Html::parse_fragment(&get_test_article_4()); - // Change the selector for tests pruposes since we cannot - // use id + // Change the selector for test pruposes since we cannot use id let selector = Selector::parse(".eli-subdivision").unwrap(); let element_ref = html.select(&selector).next().unwrap(); let article_left = ArticleParser::parse(element_ref).unwrap_err(); blob - 1c7c1d21b0adfecb2a355453f4306ac9ba4ebea0 blob + 25e44521de570bdb68bc955a0b7f188a2b149e4c --- eur-lex-scraper/src/parsers/section.rs +++ eur-lex-scraper/src/parsers/section.rs @@ -432,15 +432,15 @@ mod tests { let element_ref = html.select(&selector).next().unwrap(); let section_left = SectionParser::parse(element_ref).unwrap(); assert_eq!(section_left.items.len(), 2); - assert_eq!(section_left.items.get(0).unwrap().number, 6); + assert_eq!(section_left.items.get(0).unwrap().get_number(), 6); assert_eq!( - section_left.items.get(0).unwrap().title, - "Classification rules for high-risk AI systems".to_string() + section_left.items.get(0).unwrap().get_title(), + "Classification rules for high-risk AI systems" ); - assert_eq!(section_left.items.get(1).unwrap().number, 7); + assert_eq!(section_left.items.get(1).unwrap().get_number(), 7); assert_eq!( - section_left.items.get(1).unwrap().title, - "Amendments to Annex III".to_string() + section_left.items.get(1).unwrap().get_title(), + "Amendments to Annex III" ); } }