macros: Refactor event type to type name conversion
This commit is contained in:
parent
862ee426ab
commit
1b24a76967
@ -508,21 +508,10 @@ fn to_event_path(
|
|||||||
var: EventKindVariation,
|
var: EventKindVariation,
|
||||||
ruma_common: &TokenStream,
|
ruma_common: &TokenStream,
|
||||||
) -> TokenStream {
|
) -> TokenStream {
|
||||||
let span = name.span();
|
let name_val = name.value();
|
||||||
let name = name.value();
|
let path = name_val.strip_prefix("m.").unwrap().split('.').map(|s| Ident::new(s, name.span()));
|
||||||
|
|
||||||
// There is no need to give a good compiler error as `to_camel_case` is called first.
|
|
||||||
assert_eq!(&name[..2], "m.");
|
|
||||||
|
|
||||||
let path: Vec<_> = name[2..].split('.').collect();
|
|
||||||
|
|
||||||
let event: String = name[2..]
|
|
||||||
.split(&['.', '_'] as &[char])
|
|
||||||
.map(|s| s.chars().next().unwrap().to_uppercase().to_string() + &s[1..])
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let path = path.iter().map(|s| Ident::new(s, span));
|
|
||||||
|
|
||||||
|
let event = m_prefix_name_to_type_name(name).unwrap();
|
||||||
let event_name = if kind == EventKind::ToDevice {
|
let event_name = if kind == EventKind::ToDevice {
|
||||||
assert_eq!(var, EventKindVariation::Full);
|
assert_eq!(var, EventKindVariation::Full);
|
||||||
format_ident!("ToDevice{}Event", event)
|
format_ident!("ToDevice{}Event", event)
|
||||||
@ -538,19 +527,10 @@ fn to_event_content_path(
|
|||||||
prefix: Option<&str>,
|
prefix: Option<&str>,
|
||||||
ruma_common: &TokenStream,
|
ruma_common: &TokenStream,
|
||||||
) -> TokenStream {
|
) -> TokenStream {
|
||||||
let span = name.span();
|
let name_val = name.value();
|
||||||
let name = name.value();
|
let path = name_val.strip_prefix("m.").unwrap().split('.').map(|s| Ident::new(s, name.span()));
|
||||||
|
|
||||||
// There is no need to give a good compiler error as `to_camel_case` is called first.
|
|
||||||
assert_eq!(&name[..2], "m.");
|
|
||||||
|
|
||||||
let path: Vec<_> = name[2..].split('.').collect();
|
|
||||||
|
|
||||||
let event: String = name[2..]
|
|
||||||
.split(&['.', '_'] as &[char])
|
|
||||||
.map(|s| s.chars().next().unwrap().to_uppercase().to_string() + &s[1..])
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
|
let event = m_prefix_name_to_type_name(name).unwrap();
|
||||||
let content_str = match kind {
|
let content_str = match kind {
|
||||||
EventKind::ToDevice => {
|
EventKind::ToDevice => {
|
||||||
format_ident!("ToDevice{}{}EventContent", prefix.unwrap_or(""), event)
|
format_ident!("ToDevice{}{}EventContent", prefix.unwrap_or(""), event)
|
||||||
@ -558,8 +538,6 @@ fn to_event_content_path(
|
|||||||
_ => format_ident!("{}{}EventContent", prefix.unwrap_or(""), event),
|
_ => format_ident!("{}{}EventContent", prefix.unwrap_or(""), event),
|
||||||
};
|
};
|
||||||
|
|
||||||
let path = path.iter().map(|s| Ident::new(s, span));
|
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
#ruma_common::events::#( #path )::*::#content_str
|
#ruma_common::events::#( #path )::*::#content_str
|
||||||
}
|
}
|
||||||
|
@ -39,14 +39,14 @@ pub(crate) fn m_prefix_name_to_type_name(name: &LitStr) -> syn::Result<Ident> {
|
|||||||
let span = name.span();
|
let span = name.span();
|
||||||
let name = name.value();
|
let name = name.value();
|
||||||
|
|
||||||
if &name[..2] != "m." {
|
let name = name.strip_prefix("m.").ok_or_else(|| {
|
||||||
return Err(syn::Error::new(
|
syn::Error::new(
|
||||||
span,
|
span,
|
||||||
format!("well-known matrix events have to start with `m.` found `{}`", name),
|
format!("well-known matrix events have to start with `m.` found `{}`", name),
|
||||||
));
|
)
|
||||||
}
|
})?;
|
||||||
|
|
||||||
let s: String = name[2..]
|
let s: String = name
|
||||||
.split(&['.', '_'] as &[char])
|
.split(&['.', '_'] as &[char])
|
||||||
.map(|s| s.chars().next().unwrap().to_uppercase().to_string() + &s[1..])
|
.map(|s| s.chars().next().unwrap().to_uppercase().to_string() + &s[1..])
|
||||||
.collect();
|
.collect();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user