cgp_macro_lib/entrypoints/
cgp_component.rs1use proc_macro2::TokenStream;
2use quote::ToTokens;
3use syn::ItemTrait;
4
5use crate::derive_component::derive_component_with_ast;
6use crate::parse::ComponentSpec;
7
8pub fn cgp_component(attr: TokenStream, item: TokenStream) -> syn::Result<TokenStream> {
9 let spec: ComponentSpec = syn::parse2(attr)?;
10 let consumer_trait: ItemTrait = syn::parse2(item)?;
11
12 let derived = derive_component_with_ast(&spec, consumer_trait)?;
13
14 Ok(derived.to_token_stream())
15}