uxar-macros 0.1.5

Procedural macros for the uxar web framework
Documentation
use proc_macro::TokenStream;
use quote::quote;
use syn::parse_macro_input;



pub (crate) fn parse_openapi(attr: TokenStream, item: TokenStream) -> TokenStream {
    let input = parse_macro_input!(item as syn::ItemFn);

    let fn_name = &input.sig.ident;

    let bundle_part_fn_name = syn::Ident::new(
        &format!("__bundle_part_{}", fn_name),
        fn_name.span()
    );

    quote! {
        #input

        #[allow(non_snake_case)]
        #[doc(hidden)]
        fn #bundle_part_fn_name() -> ::uxar::bundles::BundlePart {
            ::uxar::bundles::openapi(#fn_name())
        }

    }.into()

}