mod codegen;
mod controller;
mod parser;
use proc_macro::TokenStream;
use syn::parse_macro_input;
#[proc_macro]
pub fn routes(input: TokenStream) -> TokenStream {
let parsed = parse_macro_input!(input as parser::RoutesInput);
codegen::generate(parsed).into()
}
#[proc_macro_attribute]
pub fn controller(attr: TokenStream, item: TokenStream) -> TokenStream {
match controller::expand_controller(attr.into(), item.into()) {
Ok(ts) => ts.into(),
Err(e) => e.to_compile_error().into(),
}
}
#[proc_macro_attribute]
pub fn before_action(_attr: TokenStream, item: TokenStream) -> TokenStream {
item
}
#[proc_macro_attribute]
pub fn after_action(_attr: TokenStream, item: TokenStream) -> TokenStream {
item
}