vtui-macros 0.1.0-alpha

A simple event-driven terminal UI framework
Documentation
use proc_macro::TokenStream;
use quote::quote;
use syn::{ItemFn, parse_macro_input};

#[proc_macro_attribute]
pub fn component(attr: TokenStream, item: TokenStream) -> TokenStream {
    let func = parse_macro_input!(item as ItemFn);

    let attrs = func.attrs;
    let vis = func.vis;
    let sig = func.sig;
    let block = func.block;

    let expanded = quote! {
        #(#attrs)*
        #[allow(non_snake_case)]
        #vis #sig #block
    };

    expanded.into()
}