Rename ruma_content_collection to ruma_content_enum
This commit is contained in:
		
							parent
							
								
									f531dce754
								
							
						
					
					
						commit
						aa7a54015c
					
				| @ -1,10 +1,10 @@ | ||||
| //! Implementation of the collection type macro.
 | ||||
| //! Implementation of the content_enum type macro.
 | ||||
| 
 | ||||
| use proc_macro2::TokenStream; | ||||
| use quote::quote; | ||||
| use syn::{Ident, LitStr}; | ||||
| 
 | ||||
| use parse::RumaCollectionInput; | ||||
| use parse::ContentEnumInput; | ||||
| 
 | ||||
| fn marker_traits(ident: &Ident) -> TokenStream { | ||||
|     match ident.to_string().as_str() { | ||||
| @ -20,8 +20,8 @@ fn marker_traits(ident: &Ident) -> TokenStream { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// Create a collection from `RumaCollectionInput.
 | ||||
| pub fn expand_collection(input: RumaCollectionInput) -> syn::Result<TokenStream> { | ||||
| /// Create a content enum from `ContentEnumInput`.
 | ||||
| pub fn expand_content_enum(input: ContentEnumInput) -> syn::Result<TokenStream> { | ||||
|     let attrs = &input.attrs; | ||||
|     let ident = &input.name; | ||||
|     let event_type_str = &input.events; | ||||
| @ -33,7 +33,7 @@ pub fn expand_collection(input: RumaCollectionInput) -> syn::Result<TokenStream> | ||||
|         .map(to_event_content_path) | ||||
|         .collect::<Vec<_>>(); | ||||
| 
 | ||||
|     let collection = quote! { | ||||
|     let content_enum = quote! { | ||||
|         #( #attrs )* | ||||
|         #[derive(Clone, Debug, ::serde::Serialize)] | ||||
|         #[serde(untagged)] | ||||
| @ -71,7 +71,7 @@ pub fn expand_collection(input: RumaCollectionInput) -> syn::Result<TokenStream> | ||||
|     let marker_trait_impls = marker_traits(ident); | ||||
| 
 | ||||
|     Ok(quote! { | ||||
|         #collection | ||||
|         #content_enum | ||||
| 
 | ||||
|         #event_content_impl | ||||
| 
 | ||||
| @ -115,21 +115,21 @@ pub(crate) fn to_camel_case(name: &LitStr) -> Ident { | ||||
|     Ident::new(&s, span) | ||||
| } | ||||
| 
 | ||||
| /// Details of parsing input for the `event_content_collection` procedural macro.
 | ||||
| /// Details of parsing input for the `event_content_content_enum` procedural macro.
 | ||||
| pub mod parse { | ||||
|     use syn::{ | ||||
|         parse::{self, Parse, ParseStream}, | ||||
|         Attribute, Expr, ExprLit, Ident, Lit, LitStr, Token, | ||||
|     }; | ||||
| 
 | ||||
|     /// Custom keywords for the `event_content_collection!` macro
 | ||||
|     /// Custom keywords for the `event_content_content_enum!` macro
 | ||||
|     mod kw { | ||||
|         syn::custom_keyword!(name); | ||||
|         syn::custom_keyword!(events); | ||||
|     } | ||||
| 
 | ||||
|     /// The entire `event_content_collection!` macro structure directly as it appears in the source code..
 | ||||
|     pub struct RumaCollectionInput { | ||||
|     /// The entire `event_content_content_enum!` macro structure directly as it appears in the source code..
 | ||||
|     pub struct ContentEnumInput { | ||||
|         /// Outer attributes on the field, such as a docstring.
 | ||||
|         pub attrs: Vec<Attribute>, | ||||
| 
 | ||||
| @ -143,13 +143,13 @@ pub mod parse { | ||||
|         pub events: Vec<LitStr>, | ||||
|     } | ||||
| 
 | ||||
|     impl Parse for RumaCollectionInput { | ||||
|     impl Parse for ContentEnumInput { | ||||
|         fn parse(input: ParseStream<'_>) -> parse::Result<Self> { | ||||
|             let attrs = input.call(Attribute::parse_outer)?; | ||||
|             // name field
 | ||||
|             input.parse::<kw::name>()?; | ||||
|             input.parse::<Token![:]>()?; | ||||
|             // the name of our collection enum
 | ||||
|             // the name of our content_enum enum
 | ||||
|             let name: Ident = input.parse()?; | ||||
|             input.parse::<Token![,]>()?; | ||||
| 
 | ||||
| @ -15,7 +15,7 @@ use quote::ToTokens; | ||||
| use syn::{parse_macro_input, DeriveInput}; | ||||
| 
 | ||||
| use self::{ | ||||
|     collection::{expand_collection, parse::RumaCollectionInput}, | ||||
|     content_enum::{expand_content_enum, parse::ContentEnumInput}, | ||||
|     event::expand_event, | ||||
|     event_content::{expand_message_event_content, expand_state_event_content}, | ||||
|     from_raw::expand_from_raw, | ||||
| @ -23,7 +23,7 @@ use self::{ | ||||
|     parse::RumaEventInput, | ||||
| }; | ||||
| 
 | ||||
| mod collection; | ||||
| mod content_enum; | ||||
| mod event; | ||||
| mod event_content; | ||||
| mod from_raw; | ||||
| @ -123,14 +123,15 @@ pub fn ruma_event(input: TokenStream) -> TokenStream { | ||||
|     ruma_event.into_token_stream().into() | ||||
| } | ||||
| 
 | ||||
| /// Generates a collection type to represent the various Matrix event types.
 | ||||
| /// Generates a content enum to represent the various Matrix event types.
 | ||||
| ///
 | ||||
| /// This macro also implements the necessary traits for the type to serialize and deserialize itself.
 | ||||
| /// This macro also implements the necessary traits for the type to serialize and deserialize
 | ||||
| /// itself.
 | ||||
| // TODO more docs/example
 | ||||
| #[proc_macro] | ||||
| pub fn event_content_collection(input: TokenStream) -> TokenStream { | ||||
|     let ruma_collection_input = syn::parse_macro_input!(input as RumaCollectionInput); | ||||
|     expand_collection(ruma_collection_input) | ||||
| pub fn event_content_enum(input: TokenStream) -> TokenStream { | ||||
|     let content_enum_input = syn::parse_macro_input!(input as ContentEnumInput); | ||||
|     expand_content_enum(content_enum_input) | ||||
|         .unwrap_or_else(|err| err.to_compile_error()) | ||||
|         .into() | ||||
| } | ||||
|  | ||||
| @ -14,9 +14,9 @@ use serde::{ | ||||
| }; | ||||
| 
 | ||||
| use crate::{MessageEventContent, RoomEventContent, UnsignedData}; | ||||
| use ruma_events_macros::{event_content_collection, Event}; | ||||
| use ruma_events_macros::{event_content_enum, Event}; | ||||
| 
 | ||||
| event_content_collection! { | ||||
| event_content_enum! { | ||||
|     /// A message event.
 | ||||
|     name: AnyMessageEventContent, | ||||
|     events: [ | ||||
|  | ||||
| @ -14,9 +14,9 @@ use serde::{ | ||||
| }; | ||||
| 
 | ||||
| use crate::{RoomEventContent, StateEventContent, TryFromRaw, UnsignedData}; | ||||
| use ruma_events_macros::{event_content_collection, Event}; | ||||
| use ruma_events_macros::{event_content_enum, Event}; | ||||
| 
 | ||||
| event_content_collection! { | ||||
| event_content_enum! { | ||||
|     /// A state event.
 | ||||
|     name: AnyStateEventContent, | ||||
|     events: [ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user