hpl_toolkit_attribute_account_schemas_ix_injector/
lib.rs1extern 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}