diff --git a/src/lib.rs b/src/lib.rs index 24237402..6a397ba4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,6 @@ +//! Crate `ruma-api-macros` provides a procedural macro for easily generating `ruma-api` endpoints. + +#![deny(missing_debug_implementations)] #![feature(proc_macro)] extern crate proc_macro; @@ -9,12 +12,13 @@ extern crate syn; use proc_macro::TokenStream; use quote::{ToTokens, Tokens}; -use syn::{Expr, Field, Ident, Item}; +use syn::{Expr, Field, Ident}; use parse::{Entry, parse_entries}; mod parse; +/// Generates a `ruma-api` endpoint. #[proc_macro] pub fn ruma_api(input: TokenStream) -> TokenStream { let entries = parse_entries(&input.to_string()).expect("ruma_api! failed to parse input"); diff --git a/src/parse.rs b/src/parse.rs index 03cc5ffe..4b4a0e80 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -1,16 +1,13 @@ +//! Implementation details of parsing proc macro input. + use syn::{ Attribute, AttrStyle, Expr, Field, Ident, - Item, - Lit, MetaItem, NestedMetaItem, - StrStyle, - Token, - TokenTree, Visibility, }; use syn::parse::{expr, ident, lit, ty}; @@ -64,16 +61,9 @@ named!(struct_init_field -> (Ident, Expr), do_parse!( (ident, expr) )); -named!(pub struct_like_body -> Vec, do_parse!( - punct!("{") >> - fields: terminated_list!(punct!(","), struct_field) >> - punct!("}") >> - (fields) -)); - named!(struct_field -> Field, do_parse!( attrs: many0!(outer_attr) >> - vis: visibility >> + visibility >> id: ident >> punct!(":") >> ty: ty >>