diff --git a/Cargo.lock b/Cargo.lock index 262c4a2c..0436328b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -212,7 +212,7 @@ dependencies = [ [[package]] name = "derive-ahk" -version = "0.1.0" +version = "0.1.1" dependencies = [ "proc-macro2", "quote", diff --git a/derive-ahk/Cargo.toml b/derive-ahk/Cargo.toml index 7618dc06..d02ef178 100644 --- a/derive-ahk/Cargo.toml +++ b/derive-ahk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "derive-ahk" -version = "0.1.0" +version = "0.1.1" edition = "2021" [lib] diff --git a/derive-ahk/src/lib.rs b/derive-ahk/src/lib.rs index ddbf3577..cf5af136 100644 --- a/derive-ahk/src/lib.rs +++ b/derive-ahk/src/lib.rs @@ -5,12 +5,15 @@ use ::std::clone::Clone; use ::std::convert::From; use ::std::convert::Into; +use ::std::format; use ::std::iter::Extend; use ::std::iter::Iterator; use ::std::matches; use ::std::option::Option::Some; +use ::std::string::String; use ::std::string::ToString; use ::std::unreachable; +use ::std::vec::Vec; use ::quote::quote; use ::syn::parse_macro_input; @@ -102,7 +105,8 @@ pub fn ahk_function(input: ::proc_macro::TokenStream) -> ::proc_macro::TokenStre let flag_idents_clone = flag_idents.clone(); let flags = quote! {#(--#flag_idents_clone) *} .to_string() - .replace("- - ", "--"); + .replace("- - ", "--") + .replace('_', "-"); let called_flag_arguments = quote! {#(%#flag_idents%) *} .to_string() @@ -110,19 +114,28 @@ pub fn ahk_function(input: ::proc_macro::TokenStream) -> ::proc_macro::TokenStre .replace("% ", "%") .replace("%%", "% %"); + let flags_split: Vec<_> = flags.split(' ').collect(); + let flag_args_split: Vec<_> = called_flag_arguments.split(' ').collect(); + let mut consolidated_flags: Vec = Vec::new(); + + for (idx, flag) in flags_split.iter().enumerate() { + consolidated_flags.push(format!("{} {}", flag, flag_args_split[idx])); + } + + let all_flags = consolidated_flags.join(" "); + quote! { impl AhkFunction for #name { fn generate_ahk_function() -> String { ::std::format!(r#" {}({}) {{ - Run, komorebic.exe {} {} {} {}, , Hide + Run, komorebic.exe {} {} {}, , Hide }}"#, ::std::stringify!(#name), #all_arguments, ::std::stringify!(#name).to_kebab_case(), #called_arguments, - #flags, - #called_flag_arguments + #all_flags, ) } }