use proc_macro::{Delimiter, Group, TokenStream, TokenTree};
use quote::quote;
#[proc_macro]
pub fn i18n_fmt(body: TokenStream) -> TokenStream {
let mut macro_block: TokenStream = quote!(
use i18n_format::*;
)
.into();
macro_block.extend(body.into_iter().map(move |tt| {
if let TokenTree::Ident(ref i) = tt {
match i.to_string().as_str() {
"i18n_fmt" => {
return TokenTree::Group(Group::new(Delimiter::None, quote!(i18n_format!).into()))
}
"i18n_nfmt" => {
return TokenTree::Group(Group::new(Delimiter::None, quote!(i18n_nformat!).into()))
}
_ => {}
}
}
tt
}));
[TokenTree::Group(Group::new(Delimiter::Brace, macro_block))]
.into_iter()
.collect()
}