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