singularize_macro/lib.rs
1use proc_macro::TokenStream;
2use quote::{format_ident, quote};
3use singularize::singularize as singularize_;
4use syn::{Ident, parse_macro_input};
5
6#[proc_macro]
7pub fn singularize(input: TokenStream) -> TokenStream {
8 let plural = parse_macro_input!(input as Ident);
9 let singular = format_ident!(
10 "{}",
11 singularize_(&plural.to_string()),
12 span = plural.span()
13 );
14 quote! { #singular }.into()
15}