use proc_macro::TokenStream;
use syn::{parse_macro_input};
use factory::{Penum, Subject, Pattern};
mod factory;
mod utils;
mod error;
#[proc_macro_attribute]
pub fn penum(attr: TokenStream, input: TokenStream) -> TokenStream {
let pattern = parse_macro_input!(attr as Pattern);
let input = parse_macro_input!(input as Subject);
Penum::from(pattern, input).assemble().unwrap_or_error()
}