Add parser list macro

This commit is contained in:
Rémi BERTHO 2020-06-21 14:20:42 +02:00
parent cec9900b45
commit e37425de5d
Signed by: dalan
GPG key ID: EE3B917931C07B64
2 changed files with 34 additions and 27 deletions

View file

@ -1,7 +1,7 @@
# TODO # TODO
* [x] Récupération prix darty avec [scraper](https://crates.io/crates/scraper) et [reqwest](https://crates.io/crates/reqwest) * [x] Récupération prix darty avec [scraper](https://crates.io/crates/scraper) et [reqwest](https://crates.io/crates/reqwest)
* [ ] Ajout du support de la Fnac, … * [x] Ajout du support de la Fnac, …
* [x] Récupération URL ligne de commande avec [clap](https://crates.io/crates/clap) * [x] Récupération URL ligne de commande avec [clap](https://crates.io/crates/clap)
* [ ] Ajout de SearchParser pour recherché un article sur tous les parseurs * [ ] Ajout de SearchParser pour recherché un article sur tous les parseurs
* [ ] Ajout des pays avec [celes](https://crates.io/crates/celes) : recherche uniquement sur les parser du pays et parseur multi pays (amazon) * [ ] Ajout des pays avec [celes](https://crates.io/crates/celes) : recherche uniquement sur les parser du pays et parseur multi pays (amazon)

View file

@ -27,35 +27,42 @@ pub trait PriceParser : Parser{
// @todo Macro générateur liste et tests // @todo Macro générateur liste et tests
#[derive(Arraygen, Debug)] macro_rules! gen_list {
#[gen_array(pub fn get_price: & dyn PriceParser)] ( $([$module:ident::$name:ident : $($array:ident),*]),* ) => {
/// Represent the list of all the parser #[derive(Arraygen, Debug)]
pub struct List { #[gen_array(pub fn get_price: & dyn PriceParser)]
#[in_array(get_price)] pub struct List {
darty: darty::Darty, $(
#[in_array(get_price)] $(
fnac: fnac::Fnac, #[in_array($array)]
#[in_array(get_price)] )*
du_bruit_dans_la_cuisine: du_bruit_dans_la_cuisine::DuBruitDansLaCuisine, $module: $module::$name
#[in_array(get_price)] ),*
ldlc: ldlc::LDLC, }
#[in_array(get_price)]
amazon: amazon::Amazon,
}
impl List {
impl List {
/// Create the list /// Create the list
pub fn new() -> Result<Self> { pub fn new() -> Result<Self> {
Ok(List { Ok(List {
darty: darty::Darty::new()?, $(
fnac: fnac::Fnac::new()?, $module: $module::$name::new()?
du_bruit_dans_la_cuisine: du_bruit_dans_la_cuisine::DuBruitDansLaCuisine::new()?, ),*
ldlc: ldlc::LDLC::new()?,
amazon: amazon::Amazon::new()?
}) })
} }
}
};
} }
gen_list!(
[darty::Darty : get_price],
[fnac::Fnac : get_price],
[du_bruit_dans_la_cuisine::DuBruitDansLaCuisine : get_price],
[ldlc::LDLC : get_price],
[amazon::Amazon : get_price]
);
#[test] #[test]
fn test_parser_list() { fn test_parser_list() {
let parser_list = List::new().unwrap(); let parser_list = List::new().unwrap();