From 2a84e038c428169e827e0c2fbbd685749ece74a8 Mon Sep 17 00:00:00 2001 From: Jimmy Cuadra Date: Fri, 4 May 2018 18:52:09 -0700 Subject: [PATCH] Remove parse module. --- src/api/mod.rs | 1 - src/lib.rs | 7 +-- src/parse.rs | 144 ------------------------------------------------- 3 files changed, 2 insertions(+), 150 deletions(-) delete mode 100644 src/parse.rs diff --git a/src/api/mod.rs b/src/api/mod.rs index 9bb6f125..30372e7d 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -7,7 +7,6 @@ mod metadata; mod request; mod response; -// use parse::Entry; use self::metadata::Metadata; use self::request::Request; use self::response::Response; diff --git a/src/lib.rs b/src/lib.rs index 2c4341f7..56c37691 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,7 +21,6 @@ use quote::{ToTokens, Tokens}; use api::{Api, Exprs}; mod api; -// mod parse; /// Generates a `ruma_api::Endpoint` from a concise definition. /// @@ -197,10 +196,8 @@ mod api; #[proc_macro] pub fn ruma_api(input: TokenStream) -> TokenStream { let exprs: Exprs = syn::parse(input).expect("ruma_api! failed to parse input"); - let api = match Api::try_from(exprs.inner) { - Ok(api) => api, - Err(error) => panic!("{}", error), - }; + + let api = Api::from(exprs.inner); let mut tokens = Tokens::new(); diff --git a/src/parse.rs b/src/parse.rs deleted file mode 100644 index 483efb87..00000000 --- a/src/parse.rs +++ /dev/null @@ -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), - Response(Vec), -} - -named!(pub parse_entries -> Vec, 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 } -));