#![recursion_limit = "512"]
extern crate proc_macro;
extern crate syn;
#[macro_use]
extern crate quote;
use syn::parse_macro_input;
use proc_macro::TokenStream;
mod paths_macro;
#[proc_macro]
pub fn paths(input: TokenStream) -> TokenStream {
let _ = env_logger::try_init();
tracing::debug!("Source code for `{:?}`: ", &input);
let ast = parse_macro_input!(input as paths_macro::PathsMacro);
let gen = match ast {
paths_macro::PathsMacro::PathList { struct_type, query } => {
paths_macro::parse(&query, struct_type)
}
paths_macro::PathsMacro::Top => Ok(quote!(toql::toql_api::paths::Paths::from(vec![
"".to_string()
]))),
};
match gen {
Ok(o) => {
tracing::debug!("{}", o.to_string());
TokenStream::from(o)
}
Err(e) => {
tracing::debug!("{}", e.to_string());
TokenStream::from(e)
}
}
}