1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//! Event interface generation

use proc_macro::{Span, TokenStream};
use quote::quote;
use syn::{DeriveInput, LitByteStr};

/// Expand the event interface
pub fn parse(item: DeriveInput) -> TokenStream {
    let name = LitByteStr::new(item.ident.to_string().as_bytes(), Span::call_site().into());
    let ident = item.ident;

    let expanded = quote! {
        impl zink::Event for #ident {
            const NAME: &'static [u8] = #name;
        }
    };

    expanded.into()
}