//! This crate supplies custom derive implementations for the //! [juniper](https://github.com/graphql-rust/juniper) crate. //! //! You should not depend on juniper_codegen directly. //! You only need the `juniper` crate. #![recursion_limit = "1024"] extern crate proc_macro; extern crate proc_macro2; #[macro_use] extern crate quote; #[macro_use] extern crate syn; #[macro_use] extern crate lazy_static; extern crate regex; mod derive_enum; mod derive_input_object; mod derive_object; mod derive_juniper_scalar_value; mod util; use proc_macro::TokenStream; #[proc_macro_derive(GraphQLEnum, attributes(graphql))] pub fn derive_enum(input: TokenStream) -> TokenStream { let ast = syn::parse::(input).unwrap(); let gen = derive_enum::impl_enum(&ast); gen.into() } #[proc_macro_derive(GraphQLInputObject, attributes(graphql))] pub fn derive_input_object(input: TokenStream) -> TokenStream { let ast = syn::parse::(input).unwrap(); let gen = derive_input_object::impl_input_object(&ast); gen.into() } #[proc_macro_derive(GraphQLObject, attributes(graphql))] pub fn derive_object(input: TokenStream) -> TokenStream { let ast = syn::parse::(input).unwrap(); let gen = derive_object::impl_object(&ast); gen.into() } #[proc_macro_derive(ScalarValue)] pub fn derive_juniper_scalar_value(input: TokenStream) -> TokenStream { let ast = syn::parse::(input).unwrap(); let gen = derive_juniper_scalar_value::impl_scalar_value(&ast); gen.into() }