1mod common;
2mod field_name;
3mod field_type;
4
5use field_name::DeriveFieldName;
6use field_type::DeriveFieldType;
7use proc_macro::TokenStream;
8use syn::DeriveInput;
9
10#[proc_macro_derive(
11 FieldType,
12 attributes(
13 stem_type,
14 ste_type,
15 stem_type_derive,
16 ste_type_derive,
17 stem_type_attr,
18 ste_type_attr,
19 )
20)]
21pub fn field_type(input: TokenStream) -> TokenStream {
22 let input = syn::parse_macro_input!(input as DeriveInput);
23 DeriveFieldType::new(input)
24 .and_then(|d| d.expand())
25 .unwrap_or_else(|e| e.to_compile_error())
26 .into()
27}
28
29#[proc_macro_derive(
30 FieldName,
31 attributes(
32 stem_name,
33 ste_name,
34 stem_name_derive,
35 ste_name_derive,
36 stem_name_attr,
37 ste_name_attr,
38 )
39)]
40pub fn field_name(input: TokenStream) -> TokenStream {
41 let input = syn::parse_macro_input!(input as DeriveInput);
42 DeriveFieldName::new(input)
43 .and_then(|d| d.expand())
44 .unwrap_or_else(|e| e.to_compile_error())
45 .into()
46}