#![doc = include_str!("../README.md")]
mod layout;
mod shape;
mod words;
mod written;
use proc_macro::TokenStream;
use syn::{DeriveInput, parse_macro_input};
#[proc_macro_derive(Shape, attributes(written))]
pub fn derive_shape(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
shape::expand(input).unwrap_or_else(syn::Error::into_compile_error).into()
}
#[proc_macro_attribute]
pub fn shape_layout(attr: TokenStream, item: TokenStream) -> TokenStream {
layout::expand(attr.into(), item.into()).unwrap_or_else(syn::Error::into_compile_error).into()
}