#![allow(unused_imports, dead_code)]
#![forbid(unsafe_code)]
#![doc = include_str!("../README.md")]
#![doc(
html_logo_url = "https://raw.githubusercontent.com/42ByteLabs/geekorm/main/assets/geekorm.png"
)]
extern crate proc_macro;
extern crate proc_macro2;
extern crate quote;
extern crate syn;
#[macro_use]
mod macros;
mod attr;
mod derive;
mod errors;
mod internal;
mod parsers;
use parsers::{derive_parser, enum_parser};
use proc_macro::TokenStream;
use quote::{ToTokens, quote};
use syn::{Data, DataEnum, DataStruct, DeriveInput, Fields, parse_macro_input};
#[proc_macro_derive(Table, attributes(geekorm, gorm))]
pub fn table_derive(input: TokenStream) -> TokenStream {
let ast: DeriveInput = parse_macro_input!(input as DeriveInput);
derive_parser(&ast).unwrap().into()
}
#[deprecated(
since = "0.4.2",
note = "This macro is depricated, please use `Table` instead."
)]
#[proc_macro_derive(GeekTable, attributes(geekorm))]
pub fn depricated_table_derive(input: TokenStream) -> TokenStream {
table_derive(input)
}
#[proc_macro_derive(Data, attributes(geekorm))]
pub fn data_derive(input: TokenStream) -> TokenStream {
let ast: DeriveInput = parse_macro_input!(input as DeriveInput);
enum_parser(&ast).unwrap().into()
}
#[deprecated(
since = "0.4.2",
note = "This macro is depricated, please use `Data` instead."
)]
#[proc_macro_derive(GeekValue)]
pub fn depricated_value_derive(input: TokenStream) -> TokenStream {
data_derive(input)
}