hpl_toolkit_attribute_honeycomb_context/
lib.rs

1extern 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}