uxar-macros 0.1.2

Procedural macros for the uxar web framework
Documentation

use proc_macro::TokenStream;
use quote::quote;
use syn::parse_macro_input;


pub (crate) fn parse_service(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::service(#fn_name)
        }

    }.into()

}