arxiv/
macros.rs

1/// Macro that allows you to easily build ArxivQuery.
2/// # Example
3/// ```rust
4/// use arxiv::query;
5///
6/// // query type is ArxivQuery
7/// let query = query!(
8///     search_query = "cat:cs.CL",
9///     start = 0,
10///     max_results = 5,
11///     sort_by = "submittedDate",
12///     sort_order = "descending"
13/// );
14/// ```
15#[macro_export]
16macro_rules! query {
17    ( $($i:ident = $e:expr),* ) => {
18        {
19            let temp_query = $crate::ArxivQueryBuilder::new();
20            $(
21                $crate::query!(@inner, $i, $e, temp_query);
22            )*
23            temp_query.build()
24        }
25    };
26
27    (@inner, search_query, $e:expr, $temp_query:ident) => {
28        let $temp_query = $temp_query.search_query($e);
29    };
30
31    (@inner, id_list, $e:expr, $temp_query:ident) => {
32        let $temp_query = $temp_query.id_list($e);
33    };
34
35    (@inner, start, $e:expr, $temp_query:ident) => {
36        let $temp_query = $temp_query.start($e);
37    };
38
39    (@inner, max_results, $e:expr, $temp_query:ident) => {
40        let $temp_query = $temp_query.max_results($e);
41    };
42
43    (@inner, sort_by, $e:expr, $temp_query:ident) => {
44        let $temp_query = $temp_query.sort_by($e);
45    };
46
47    (@inner, sort_order, $e:expr, $temp_query:ident) => {
48        let $temp_query = $temp_query.sort_order($e);
49    };
50}