Split parsing and generation into separate modules.
This commit is contained in:
		
							parent
							
								
									65bd8e86cc
								
							
						
					
					
						commit
						48d6ef7ead
					
				
							
								
								
									
										27
									
								
								src/gen.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/gen.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					//! Details of generating code for the `ruma_event` procedural macro.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use proc_macro2::TokenStream;
 | 
				
			||||||
 | 
					use quote::{quote, ToTokens};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use crate::parse::RumaEventInput;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// The result of processing the `ruma_event` macro, ready for output back to source code.
 | 
				
			||||||
 | 
					pub struct RumaEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl From<RumaEventInput> for RumaEvent {
 | 
				
			||||||
 | 
					    // TODO: Provide an actual impl for this.
 | 
				
			||||||
 | 
					    fn from(_input: RumaEventInput) -> Self {
 | 
				
			||||||
 | 
					        Self
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl ToTokens for RumaEvent {
 | 
				
			||||||
 | 
					    // TODO: Provide an actual impl for this.
 | 
				
			||||||
 | 
					    fn to_tokens(&self, tokens: &mut TokenStream) {
 | 
				
			||||||
 | 
					        let output = quote!(
 | 
				
			||||||
 | 
					            pub struct Foo {}
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        output.to_tokens(tokens);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -34,9 +34,10 @@ extern crate proc_macro;
 | 
				
			|||||||
use proc_macro::TokenStream;
 | 
					use proc_macro::TokenStream;
 | 
				
			||||||
use quote::ToTokens;
 | 
					use quote::ToTokens;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::event::{RumaEvent, RumaEventInput};
 | 
					use crate::{gen::RumaEvent, parse::RumaEventInput};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mod event;
 | 
					mod gen;
 | 
				
			||||||
 | 
					mod parse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A note about the `example` modules that appears in doctests:
 | 
					// A note about the `example` modules that appears in doctests:
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,7 @@
 | 
				
			|||||||
//! Details of the `ruma_event` procedural macro.
 | 
					//! Details of parsing input for the `ruma_event` procedural macro.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use proc_macro2::{Span, TokenStream};
 | 
					use proc_macro2::Span;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use quote::{quote, ToTokens};
 | 
					 | 
				
			||||||
use syn::{
 | 
					use syn::{
 | 
				
			||||||
    braced,
 | 
					    braced,
 | 
				
			||||||
    parse::{self, Parse, ParseStream},
 | 
					    parse::{self, Parse, ParseStream},
 | 
				
			||||||
@ -12,27 +11,6 @@ use syn::{
 | 
				
			|||||||
    TypePath,
 | 
					    TypePath,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// The result of processing the `ruma_event` macro, ready for output back to source code.
 | 
					 | 
				
			||||||
pub struct RumaEvent;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
impl From<RumaEventInput> for RumaEvent {
 | 
					 | 
				
			||||||
    // TODO: Provide an actual impl for this.
 | 
					 | 
				
			||||||
    fn from(_input: RumaEventInput) -> Self {
 | 
					 | 
				
			||||||
        Self
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
impl ToTokens for RumaEvent {
 | 
					 | 
				
			||||||
    // TODO: Provide an actual impl for this.
 | 
					 | 
				
			||||||
    fn to_tokens(&self, tokens: &mut TokenStream) {
 | 
					 | 
				
			||||||
        let output = quote!(
 | 
					 | 
				
			||||||
            pub struct Foo {}
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        output.to_tokens(tokens);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// The entire `ruma_event!` macro structure directly as it appears in the source code..
 | 
					/// The entire `ruma_event!` macro structure directly as it appears in the source code..
 | 
				
			||||||
pub struct RumaEventInput {
 | 
					pub struct RumaEventInput {
 | 
				
			||||||
    /// Outer attributes on the field, such as a docstring.
 | 
					    /// Outer attributes on the field, such as a docstring.
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user