1use proc_macro::TokenStream;
2
3#[proc_macro]
4pub fn impl_value_trait(item: TokenStream) -> TokenStream {
5 let data = format!(
6 r"
7 impl Value for {} {{
8 fn toValue(&self, _default: Option<String>) -> String {{
9 self.to_string().clone()
10 }}
11 }}
12 ",
13 item.to_string()
14 );
15
16 data.parse().unwrap()
17}
18
19#[proc_macro]
20pub fn impl_value_trait_option(item: TokenStream) -> TokenStream {
21 let data = format!(
22 r"
23 impl Value for Option<{}> {{
24 fn toValue(&self, _default: Option<String>) -> String {{
25 match self {{
26 Some(value) => value.to_string(),
27 None => {{
28 if let Some(value) = _default {{
29 value.to_string()
30 }} else {{
31 {}.to_string()
32 }}
33 }}
34 }}
35 }}
36 }}
37 ",
38 item.to_string(),
39 "\"None\""
40 );
41
42 data.parse().unwrap()
43}