Add parser list macro
This commit is contained in:
parent
cec9900b45
commit
e37425de5d
2 changed files with 34 additions and 27 deletions
2
TODO.md
2
TODO.md
|
@ -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)
|
||||||
|
|
|
@ -27,35 +27,42 @@ pub trait PriceParser : Parser{
|
||||||
|
|
||||||
// @todo Macro générateur liste et tests
|
// @todo Macro générateur liste et tests
|
||||||
|
|
||||||
|
macro_rules! gen_list {
|
||||||
|
( $([$module:ident::$name:ident : $($array:ident),*]),* ) => {
|
||||||
#[derive(Arraygen, Debug)]
|
#[derive(Arraygen, Debug)]
|
||||||
#[gen_array(pub fn get_price: & dyn PriceParser)]
|
#[gen_array(pub fn get_price: & dyn PriceParser)]
|
||||||
/// Represent the list of all the parser
|
|
||||||
pub struct List {
|
pub struct List {
|
||||||
#[in_array(get_price)]
|
$(
|
||||||
darty: darty::Darty,
|
$(
|
||||||
#[in_array(get_price)]
|
#[in_array($array)]
|
||||||
fnac: fnac::Fnac,
|
)*
|
||||||
#[in_array(get_price)]
|
$module: $module::$name
|
||||||
du_bruit_dans_la_cuisine: du_bruit_dans_la_cuisine::DuBruitDansLaCuisine,
|
),*
|
||||||
#[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();
|
||||||
|
|
Loading…
Reference in a new issue