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