1#![allow(clippy::needless_doctest_main)]
2#![doc = include_str!("../README.md")]
3
4mod result;
5mod source;
6
7use quote::ToTokens;
8use source::Sourcecode;
9
10#[proc_macro]
11pub fn wgsl(shader: proc_macro::TokenStream) -> proc_macro::TokenStream {
12 let mut sourcecode = Sourcecode::new();
13 sourcecode.append_tokens(shader);
14
15 let mut result = sourcecode.complete();
16
17 result.validate();
18
19 let mut tokens = proc_macro2::TokenStream::new();
20 for item in result.to_items() {
21 item.to_tokens(&mut tokens);
22 }
23 tokens.into()
24}