doido_controller_macros/
lib.rs1mod codegen;
2mod controller;
3mod parser;
4
5use proc_macro::TokenStream;
6use syn::parse_macro_input;
7
8#[proc_macro]
11pub fn routes(input: TokenStream) -> TokenStream {
12 let parsed = parse_macro_input!(input as parser::RoutesInput);
13 codegen::generate(parsed).into()
14}
15
16#[proc_macro_attribute]
19pub fn controller(attr: TokenStream, item: TokenStream) -> TokenStream {
20 match controller::expand_controller(attr.into(), item.into()) {
21 Ok(ts) => ts.into(),
22 Err(e) => e.to_compile_error().into(),
23 }
24}
25
26#[proc_macro_attribute]
29pub fn before_action(_attr: TokenStream, item: TokenStream) -> TokenStream {
30 item
31}
32
33#[proc_macro_attribute]
36pub fn after_action(_attr: TokenStream, item: TokenStream) -> TokenStream {
37 item
38}