1extern crate proc_macro;
2
3mod crud_impl;
4mod derive;
5mod error;
6mod props;
7
8pub(crate) use error::*;
9
10use proc_macro::TokenStream;
11use syn::{parse_macro_input, AttributeArgs};
12
13#[doc = include_str!("../docs/crud.md")]
14#[proc_macro_attribute]
15pub fn crud(args: TokenStream, item: TokenStream) -> TokenStream {
16 let args = parse_macro_input!(args as AttributeArgs);
17 match crud_impl::crud_impl(args, item.into()) {
18 Ok(res) => res.into(),
19 Err(e) => e.into_compile_error().into(),
20 }
21}