dynisland_macro/
lib.rs

1use proc_macro::TokenStream;
2use quote::TokenStreamExt;
3use syn::{parse_macro_input, DeriveInput};
4
5mod config;
6
7#[proc_macro_derive(MultiWidgetConfig, attributes(child_only))]
8pub fn multi_widget_config_derive(input: TokenStream) -> TokenStream {
9    let input = parse_macro_input!(input as DeriveInput);
10    let mut tokens = proc_macro2::TokenStream::new();
11    tokens.append_all(config::derive_multi_widget_config_main(input.clone()));
12    tokens.append_all(config::derive_multi_widget_config_de_main(input.clone()));
13    tokens.into()
14}
15
16#[proc_macro_derive(OptDeserializeConfig, attributes(deserialize_struct))]
17pub fn opt_deserialize_derive(input: TokenStream) -> TokenStream {
18    let input = parse_macro_input!(input as DeriveInput);
19    let mut tokens = proc_macro2::TokenStream::new();
20    // tokens.append_all(config::derive_multi_widget_config_main(input.clone()));
21    tokens.append_all(config::derive_config_de(input.clone()));
22    tokens.into()
23}