mod funcs;
mod router;
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, ItemFn};
use router::Api;
use funcs::DceError;
#[proc_macro_attribute]
pub fn api(args: TokenStream, input: TokenStream) -> TokenStream {
let api = parse_macro_input!(args as Api);
let input = parse_macro_input!(input as ItemFn);
api.processing(input).into()
}
#[proc_macro]
pub fn pub_msg(args: TokenStream) -> TokenStream {
let err = parse_macro_input!(args as DceError);
let call = err.gen_func(true);
quote!(#call).into()
}
#[proc_macro]
pub fn priv_msg(args: TokenStream) -> TokenStream {
let err = parse_macro_input!(args as DceError);
let call = err.gen_func(false);
quote!(#call).into()
}
#[proc_macro]
pub fn err_pub_msg(args: TokenStream) -> TokenStream {
let err = parse_macro_input!(args as DceError);
let call = err.gen_func(true);
quote!(Err(#call)).into()
}
#[proc_macro]
pub fn err_priv_msg(args: TokenStream) -> TokenStream {
let err = parse_macro_input!(args as DceError);
let call = err.gen_func(false);
quote!(Err(#call)).into()
}