1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use syn::{parse_macro_input, AttributeArgs, ItemFn};

mod error;
mod operation;
mod utils;

static OPENAPI_FUNCTION_NAME_SUFFIX: &str = "__openapi";

#[proc_macro_attribute]
pub fn openapi(
    attr: proc_macro::TokenStream,
    input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
    match operation::openapi(
        parse_macro_input!(attr as AttributeArgs),
        parse_macro_input!(input as ItemFn),
    ) {
        Ok(x) => x.into(),
        Err(err) => err.write().into(),
    }
}