whisky_macros/data/
constr_wrapper.rs

1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{parse_macro_input, DeriveInput};
4
5pub fn derive_constr_wrapper(input: TokenStream) -> TokenStream {
6    let input = parse_macro_input!(input as DeriveInput);
7    let name = &input.ident;
8
9    let expanded = quote! {
10        impl ::whisky::data::PlutusDataJson for #name {
11            fn to_json(&self) -> Value {
12                self.0.to_json()
13            }
14
15            fn to_json_string(&self) -> String {
16                self.to_json().to_string()
17            }
18
19            fn to_constr_field(&self) -> Vec<Value> {
20                vec![self.0.to_json()]
21            }
22        }
23
24    };
25
26    expanded.into()
27}