Generate an enumeration itself too

This commit is contained in:
Temirkhan Myrzamadi 2020-07-24 00:49:34 +06:00
parent a18ef6fc94
commit 15e8e95952

View file

@ -28,9 +28,11 @@ pub fn handler(_attr: TokenStream, item: TokenStream) -> TokenStream {
#[proc_macro_attribute]
pub fn bot_dialogue(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item_cloned = item.clone();
let input = parse_macro_input!(item as ItemEnum);
let mut dispatch_fn = "".to_owned();
write!(dispatch_fn, "{}", item_cloned).unwrap();
write!(dispatch_fn, "impl {} {{ pub async fn dispatch(self, cx: teloxide::dispatching::UpdateWithCx<teloxide::types::Message>) -> teloxide::dispatching::dialogue::TransitionOut<Self> {{ match self {{", input.ident).unwrap();
for variant in input.variants.iter() {