aboutsummaryrefslogtreecommitdiff
path: root/macros/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/lib.rs')
-rw-r--r--macros/src/lib.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/macros/src/lib.rs b/macros/src/lib.rs
index 222f14d..5ccf1bb 100644
--- a/macros/src/lib.rs
+++ b/macros/src/lib.rs
@@ -156,3 +156,23 @@ pub fn catinator(tokens: TokenStream) -> TokenStream {
return gen.into();
}
+#[proc_macro]
+pub fn privmsg(tokens: TokenStream) -> TokenStream {
+ use crate::macro_types::privmsg::Item;
+ let item = parse_macro_input!(tokens as Item);
+
+ let msg = item.msg;
+ let func = item.func;
+
+ let gen = quote! {
+ match &#msg.command {
+ Command::PRIVMSG(target, text) => {
+ #func
+
+ Ok(())
+ }
+ _ => Ok(()),
+ }
+ };
+ return gen.into();
+}