1mod create_signal_from_msg;
2mod derive_msg_meta;
3mod message_key;
4
5use proc_macro::TokenStream;
6use proc_macro_error::proc_macro_error;
7use quote::quote;
8use syn::{parse_macro_input, parse_str, DeriveInput};
9
10#[proc_macro_derive(MsgKey)]
11#[proc_macro_error]
12pub fn derive_msg_key(input: TokenStream) -> TokenStream {
13 let input: DeriveInput = parse_macro_input!(input as DeriveInput);
14 message_key::derive_msg_key(&input)
15}
16
17#[proc_macro_derive(MsgMeta)]
18#[proc_macro_error]
19pub fn derive_into_eav(input: TokenStream) -> TokenStream {
20 let input: DeriveInput = parse_macro_input!(input as DeriveInput);
21 derive_msg_meta::derive_msg_meta(&input)
22}
23
24#[proc_macro]
34pub fn create_signal_from_msg(msg: TokenStream) -> TokenStream {
35 let code = create_signal_from_msg::create_signal_from_msg(&msg.to_string());
36 let code = parse_str::<syn::Expr>(&code).unwrap();
37 TokenStream::from(quote! {
38 #code
39 })
40}
41
42#[proc_macro]
46pub fn message_new(msg: TokenStream) -> TokenStream {
47 let code = create_signal_from_msg::message_new(&msg.to_string());
48 let code = parse_str::<syn::Expr>(&code).unwrap();
49 TokenStream::from(quote! {
50 #code
51 })
52}
53
54