reqwest_scraper_macros/
lib.rs1mod css_selector;
2mod include_http;
3mod utils;
4mod xpath;
5
6use include_http::IncludeHttp;
7use proc_macro::TokenStream;
8use syn::{parse_macro_input, DeriveInput};
9
10#[proc_macro_derive(FromCssSelector, attributes(selector))]
11pub fn derive_css_selector(input: TokenStream) -> TokenStream {
12 let input = parse_macro_input!(input as DeriveInput);
13
14 css_selector::expand_derive_from_response(input)
15 .unwrap_or_else(syn::Error::into_compile_error)
16 .into()
17}
18
19#[proc_macro_derive(FromXPath, attributes(xpath))]
20pub fn derive_xpath(input: TokenStream) -> TokenStream {
21 let input = parse_macro_input!(input as DeriveInput);
22
23 xpath::expand_derive_from_response(input)
24 .unwrap_or_else(syn::Error::into_compile_error)
25 .into()
26}
27
28#[proc_macro]
29pub fn include_http(input: TokenStream) -> TokenStream {
30 let input: IncludeHttp = match syn::parse(input) {
31 Ok(input) => input,
32 Err(e) => return syn::Error::into_compile_error(e).into(),
33 };
34 include_http::expand_macro(input)
35 .unwrap_or_else(syn::Error::into_compile_error)
36 .into()
37}