hpl_toolkit_attribute_honeycomb_context/
lib.rs1extern crate proc_macro;
2mod renderer;
3use syn::parse_macro_input;
4
5#[proc_macro_attribute]
6pub fn honeycomb_context(
7 args: proc_macro::TokenStream,
8 input: proc_macro::TokenStream,
9) -> proc_macro::TokenStream {
10 let context = parse_macro_input!(input as syn::ItemStruct);
11 let args = args.to_string();
12
13 let is_compression = args.contains("compression");
14
15 renderer::HoneycombContext::new(
16 context,
17 renderer::HoneycombContextFlags {
18 global: args.contains("global"),
19 compression_program: is_compression,
20 noop_program: is_compression || args.contains("noop"),
21 },
22 )
23 .render()
24}