Browse Source

fix(core): convert command arguments to camel case (#1753)

chip 4 years ago
parent
commit
e84949524c
1 changed files with 23 additions and 0 deletions
  1. 23 0
      core/tauri-macros/src/command/wrapper.rs

+ 23 - 0
core/tauri-macros/src/command/wrapper.rs

@@ -176,6 +176,8 @@ fn parse_arg(command: &Ident, arg: &FnArg) -> syn::Result<TokenStream2> {
     ));
   }
 
+  let key = snake_case_to_camel_case(key);
+
   Ok(quote!(::tauri::command::CommandArg::from_command(
     ::tauri::command::CommandItem {
       name: stringify!(#command),
@@ -184,3 +186,24 @@ fn parse_arg(command: &Ident, arg: &FnArg) -> syn::Result<TokenStream2> {
     }
   )))
 }
+
+fn snake_case_to_camel_case(s: String) -> String {
+  if s.as_str().contains('_') {
+    let mut camel = String::with_capacity(s.len());
+    let mut to_upper = false;
+    for c in s.chars() {
+      match c {
+        '_' => to_upper = true,
+        c if to_upper => {
+          camel.push(c.to_ascii_uppercase());
+          to_upper = false;
+        }
+        c => camel.push(c),
+      }
+    }
+
+    camel
+  } else {
+    s
+  }
+}