athene_macro/
lib.rs

1mod controller;
2mod middleware;
3mod util;
4
5use proc_macro::TokenStream;
6use syn::{parse_macro_input, AttributeArgs, ItemImpl};
7
8#[allow(dead_code)]
9#[allow(unused_imports)]
10#[proc_macro_attribute]
11pub fn controller(args: TokenStream, input: TokenStream) -> TokenStream {
12    let args = parse_macro_input!(args as AttributeArgs);
13    let input = parse_macro_input!(input as ItemImpl);
14
15    let expanded =
16        controller::expand_controller(args, input).unwrap_or_else(|e| e.to_compile_error());
17
18    TokenStream::from(expanded)
19}
20
21#[proc_macro_attribute]
22pub fn middleware(_args: TokenStream, input: TokenStream) -> TokenStream {
23    let input = parse_macro_input!(input as ItemImpl);
24
25    let expanded = middleware::expand_middleware(input).unwrap_or_else(|e| e.to_compile_error());
26
27    TokenStream::from(expanded)
28}