1mod name;
2mod variants;
3
4use proc_macro::TokenStream;
5use syn::{ItemEnum, parse_macro_input};
6
7#[proc_macro_derive(Name, attributes(name))]
8pub fn name(input: TokenStream) -> TokenStream {
9 name::name(parse_macro_input!(input as ItemEnum)).into()
10}
11
12#[cfg(not(feature = "name-includes-plural"))]
13#[proc_macro_derive(NamePlural)]
14pub fn name_plural(input: TokenStream) -> TokenStream {
15 name::name_plural(parse_macro_input!(input as ItemEnum)).into()
16}
17
18#[proc_macro_derive(Variants)]
19pub fn variants(input: TokenStream) -> TokenStream {
20 variants::variants(parse_macro_input!(input as ItemEnum))
21 .unwrap_or_else(|e| e.into_compile_error())
22 .into()
23}