hpl_toolkit_attribute_account_schemas_ix_injector/
lib.rs

1extern crate proc_macro;
2mod renderers;
3use regex::Regex;
4use syn::parse_macro_input;
5
6#[proc_macro_attribute]
7pub fn account_schemas_ix_injector(
8    args: proc_macro::TokenStream,
9    input: proc_macro::TokenStream,
10) -> proc_macro::TokenStream {
11    let args_str = args.to_string();
12    let accounts = Regex::new(r"\s|\n|\t|,")
13        .unwrap()
14        .split(args_str.as_str())
15        .collect::<Vec<&str>>()
16        .iter()
17        .filter_map(|s| {
18            if s.is_empty() {
19                None
20            } else {
21                Some(s.to_string())
22            }
23        })
24        .collect::<Vec<String>>();
25    let program = parse_macro_input!(input as syn::ItemMod);
26    renderers::AccountSchemaInstructionInjectors::new(program, accounts).render()
27}