Skip to main content

decal_macros/
lib.rs

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}