Remove parse module.
This commit is contained in:
parent
4c46df9a59
commit
2a84e038c4
@ -7,7 +7,6 @@ mod metadata;
|
|||||||
mod request;
|
mod request;
|
||||||
mod response;
|
mod response;
|
||||||
|
|
||||||
// use parse::Entry;
|
|
||||||
use self::metadata::Metadata;
|
use self::metadata::Metadata;
|
||||||
use self::request::Request;
|
use self::request::Request;
|
||||||
use self::response::Response;
|
use self::response::Response;
|
||||||
|
@ -21,7 +21,6 @@ use quote::{ToTokens, Tokens};
|
|||||||
use api::{Api, Exprs};
|
use api::{Api, Exprs};
|
||||||
|
|
||||||
mod api;
|
mod api;
|
||||||
// mod parse;
|
|
||||||
|
|
||||||
/// Generates a `ruma_api::Endpoint` from a concise definition.
|
/// Generates a `ruma_api::Endpoint` from a concise definition.
|
||||||
///
|
///
|
||||||
@ -197,10 +196,8 @@ mod api;
|
|||||||
#[proc_macro]
|
#[proc_macro]
|
||||||
pub fn ruma_api(input: TokenStream) -> TokenStream {
|
pub fn ruma_api(input: TokenStream) -> TokenStream {
|
||||||
let exprs: Exprs = syn::parse(input).expect("ruma_api! failed to parse input");
|
let exprs: Exprs = syn::parse(input).expect("ruma_api! failed to parse input");
|
||||||
let api = match Api::try_from(exprs.inner) {
|
|
||||||
Ok(api) => api,
|
let api = Api::from(exprs.inner);
|
||||||
Err(error) => panic!("{}", error),
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut tokens = Tokens::new();
|
let mut tokens = Tokens::new();
|
||||||
|
|
||||||
|
144
src/parse.rs
144
src/parse.rs
@ -1,144 +0,0 @@
|
|||||||
//! Implementation details of parsing proc macro input.
|
|
||||||
|
|
||||||
use syn::{
|
|
||||||
Attribute,
|
|
||||||
AttrStyle,
|
|
||||||
Expr,
|
|
||||||
Field,
|
|
||||||
Ident,
|
|
||||||
Meta,
|
|
||||||
NestedMeta,
|
|
||||||
Visibility,
|
|
||||||
};
|
|
||||||
// use syn::parse::{expr, ident, lit, ty};
|
|
||||||
// use synom::space::{block_comment, whitespace};
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub enum Entry {
|
|
||||||
Metadata(Vec<(Ident, Expr)>),
|
|
||||||
Request(Vec<Field>),
|
|
||||||
Response(Vec<Field>),
|
|
||||||
}
|
|
||||||
|
|
||||||
named!(pub parse_entries -> Vec<Entry>, do_parse!(
|
|
||||||
entries: many0!(entry) >>
|
|
||||||
(entries)
|
|
||||||
));
|
|
||||||
|
|
||||||
named!(entry -> Entry, alt!(
|
|
||||||
do_parse!(
|
|
||||||
block_type: syn!(Ident) >>
|
|
||||||
cond_reduce!(block_type == "metadata") >>
|
|
||||||
brace_and_fields: braces!(many0!(struct_init_field)) >>
|
|
||||||
(Entry::Metadata(brace_and_fields.1))
|
|
||||||
)
|
|
||||||
|
|
|
||||||
do_parse!(
|
|
||||||
block_type: syn!(Ident) >>
|
|
||||||
cond_reduce!(block_type == "request") >>
|
|
||||||
brace_and_fields: braces!(terminated_list!(punct!(","), struct_field)) >>
|
|
||||||
(Entry::Request(brace_and_fields.1))
|
|
||||||
)
|
|
||||||
|
|
|
||||||
do_parse!(
|
|
||||||
block_type: syn!(Ident) >>
|
|
||||||
cond_reduce!(block_type == "response") >>
|
|
||||||
brace_and_fields: braces!(terminated_list!(punct!(","), struct_field)) >>
|
|
||||||
(Entry::Response(brace_and_fields.1))
|
|
||||||
)
|
|
||||||
));
|
|
||||||
|
|
||||||
// Everything below copy/pasted from syn 0.11.11.
|
|
||||||
|
|
||||||
named!(struct_init_field -> (Ident, Expr), do_parse!(
|
|
||||||
ident: ident >>
|
|
||||||
punct!(:) >>
|
|
||||||
expr: expr >>
|
|
||||||
punct!(,) >>
|
|
||||||
(ident, expr)
|
|
||||||
));
|
|
||||||
|
|
||||||
named!(struct_field -> Field, do_parse!(
|
|
||||||
attrs: many0!(outer_attr) >>
|
|
||||||
visibility >>
|
|
||||||
id: ident >>
|
|
||||||
punct!(:) >>
|
|
||||||
ty: ty >>
|
|
||||||
(Field {
|
|
||||||
ident: Some(id),
|
|
||||||
vis: Visibility::Public, // Ignore declared visibility, always make fields public
|
|
||||||
attrs: attrs,
|
|
||||||
ty: ty,
|
|
||||||
})
|
|
||||||
));
|
|
||||||
|
|
||||||
named!(outer_attr -> Attribute, alt!(
|
|
||||||
do_parse!(
|
|
||||||
punct!(#) >>
|
|
||||||
brackets_and_meta_item: brackets!(meta_item) >>
|
|
||||||
(Attribute {
|
|
||||||
style: AttrStyle::Outer,
|
|
||||||
value: brackets_and_meta_item.1,
|
|
||||||
is_sugared_doc: false,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
|
||||||
do_parse!(
|
|
||||||
punct!(/) >>
|
|
||||||
punct!(/) >>
|
|
||||||
punct!(/) >>
|
|
||||||
not!(tag!("/")) >>
|
|
||||||
content: take_until!("\n") >>
|
|
||||||
(Attribute {
|
|
||||||
style: AttrStyle::Outer,
|
|
||||||
value: Meta::NameValue(
|
|
||||||
"doc".into(),
|
|
||||||
format!("///{}", content).into(),
|
|
||||||
),
|
|
||||||
is_sugared_doc: true,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
|
||||||
do_parse!(
|
|
||||||
option!(whitespace) >>
|
|
||||||
peek!(tuple!(tag!("/**"), not!(tag!("*")))) >>
|
|
||||||
com: block_comment >>
|
|
||||||
(Attribute {
|
|
||||||
style: AttrStyle::Outer,
|
|
||||||
value: Meta::NameValue(
|
|
||||||
"doc".into(),
|
|
||||||
com.into(),
|
|
||||||
),
|
|
||||||
is_sugared_doc: true,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
));
|
|
||||||
|
|
||||||
named!(meta_item -> Meta, alt!(
|
|
||||||
do_parse!(
|
|
||||||
id: ident >>
|
|
||||||
parens_and_inner: parens!(terminated_list!(punct!(,), nested_meta_item)) >>
|
|
||||||
(Meta::List(id, parens_and_inner.1))
|
|
||||||
)
|
|
||||||
|
|
|
||||||
do_parse!(
|
|
||||||
name: ident >>
|
|
||||||
punct!(=) >>
|
|
||||||
value: lit >>
|
|
||||||
(Meta::NameValue(name, value))
|
|
||||||
)
|
|
||||||
|
|
|
||||||
map!(ident, Meta::Word)
|
|
||||||
));
|
|
||||||
|
|
||||||
named!(nested_meta_item -> NestedMeta, alt!(
|
|
||||||
meta_item => { NestedMeta::Meta }
|
|
||||||
|
|
|
||||||
lit => { NestedMeta::Literal }
|
|
||||||
));
|
|
||||||
|
|
||||||
named!(visibility -> Visibility, alt!(
|
|
||||||
keyword!(pub) => { |_| Visibility::Public }
|
|
||||||
|
|
|
||||||
epsilon!() => { |_| Visibility::Inherited }
|
|
||||||
));
|
|
Loading…
x
Reference in New Issue
Block a user