macros: Allow variable event types in event_enum!
… the generated `*EventType`s aren't correct yet though.
This commit is contained in:
parent
ef9c84716c
commit
a860fdaa86
@ -6,7 +6,8 @@ event_enum! {
|
|||||||
"m.direct",
|
"m.direct",
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
"m.ignored_user_list",
|
"m.ignored_user_list",
|
||||||
"m.push_rules",
|
// Doesn't actually have a wildcard, but this should work as a wildcard test
|
||||||
|
"m.push_rules.*",
|
||||||
#[cfg(any())]
|
#[cfg(any())]
|
||||||
"m.ruma_test",
|
"m.ruma_test",
|
||||||
}
|
}
|
||||||
|
@ -525,9 +525,7 @@ fn to_event_path(
|
|||||||
var: EventKindVariation,
|
var: EventKindVariation,
|
||||||
ruma_common: &TokenStream,
|
ruma_common: &TokenStream,
|
||||||
) -> TokenStream {
|
) -> TokenStream {
|
||||||
let name_val = name.value();
|
let path = event_module_path(name);
|
||||||
let path = name_val.strip_prefix("m.").unwrap().split('.').map(|s| Ident::new(s, name.span()));
|
|
||||||
|
|
||||||
let event = m_prefix_name_to_type_name(name).unwrap();
|
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);
|
||||||
@ -544,9 +542,7 @@ fn to_event_content_path(
|
|||||||
prefix: Option<&str>,
|
prefix: Option<&str>,
|
||||||
ruma_common: &TokenStream,
|
ruma_common: &TokenStream,
|
||||||
) -> TokenStream {
|
) -> TokenStream {
|
||||||
let name_val = name.value();
|
let path = event_module_path(name);
|
||||||
let path = name_val.strip_prefix("m.").unwrap().split('.').map(|s| Ident::new(s, name.span()));
|
|
||||||
|
|
||||||
let event = m_prefix_name_to_type_name(name).unwrap();
|
let event = m_prefix_name_to_type_name(name).unwrap();
|
||||||
let content_str = match kind {
|
let content_str = match kind {
|
||||||
EventKind::ToDevice => {
|
EventKind::ToDevice => {
|
||||||
@ -560,6 +556,17 @@ fn to_event_content_path(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn event_module_path(name: &LitStr) -> Vec<Ident> {
|
||||||
|
let value = name.value();
|
||||||
|
let value = value.strip_prefix("m.").unwrap();
|
||||||
|
value
|
||||||
|
.strip_suffix(".*")
|
||||||
|
.unwrap_or(value)
|
||||||
|
.split('.')
|
||||||
|
.map(|s| Ident::new(s, name.span()))
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
fn field_return_type(
|
fn field_return_type(
|
||||||
name: &str,
|
name: &str,
|
||||||
var: EventKindVariation,
|
var: EventKindVariation,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user