1extern crate proc_macro;
2mod ast;
3mod ident_gen;
4mod text;
5
6use crate::text::text_impl;
7use ast::{
8 child::Tokenize,
9 tree::DecalTree,
10};
11use ident_gen::IdentGen;
12use proc_macro::TokenStream;
13use syn::parse_macro_input;
14
15#[proc_macro]
16pub fn decal(input: TokenStream) -> TokenStream {
17 decal_impl(input)
18}
19
20#[proc_macro]
21pub fn text(input: TokenStream) -> TokenStream {
22 text_impl(input)
23}
24
25fn decal_impl(input: TokenStream) -> TokenStream {
26 let DecalTree { root } = parse_macro_input!(input as DecalTree);
27 let mut ident_gen = IdentGen::new();
28 TokenStream::from(root.tokenize(&mut ident_gen, None))
29}