1extern crate proc_macro;
2
3mod case;
4mod entity_def;
5mod parsing;
6mod projection;
7mod symbol;
8
9use proc_macro::TokenStream;
10use syn::parse_macro_input;
11
12#[proc_macro_derive(EntityDef, attributes(serde))]
13pub fn derive_entity_def(input: TokenStream) -> TokenStream {
14 let input = parse_macro_input!(input as syn::DeriveInput);
15
16 crate::entity_def::generate(input)
17 .unwrap_or_else(|err| err.into_compile_error())
18 .into()
19}
20
21#[proc_macro_derive(Projection, attributes(serde, entity))]
22pub fn derive_projection(input: TokenStream) -> TokenStream {
23 let input = parse_macro_input!(input as syn::DeriveInput);
24
25 crate::projection::generate(input)
26 .unwrap_or_else(|err| err.into_compile_error())
27 .into()
28}