From 2b1bfa95fa9f6e6cb6b1cf61a8d88583dcca9cd8 Mon Sep 17 00:00:00 2001 From: nojaf Date: Sat, 10 May 2025 20:30:26 +0200 Subject: [PATCH 1/5] Change snakecase to camelcase for prop --- compiler/core/js_dump.ml | 13 +++++++++++++ tests/tests/src/jsx_preserve_test.mjs | 5 +++++ tests/tests/src/jsx_preserve_test.res | 2 ++ 3 files changed, 20 insertions(+) diff --git a/compiler/core/js_dump.ml b/compiler/core/js_dump.ml index fc61d06b51..ac1b727f21 100644 --- a/compiler/core/js_dump.ml +++ b/compiler/core/js_dump.ml @@ -1154,6 +1154,19 @@ and print_jsx cxt ?(spread_props : J.expression option) in let print_prop n x ctx = + let n = + (* turn aria-label to ariaLabel *) + if not (String.contains n '-') then n + else + let chars = String.to_seq n |> List.of_seq in + let rec visit chars acc = + match chars with + | [] -> List.rev acc + | '-' :: l :: rest -> visit rest (Char.uppercase_ascii l :: acc) + | c :: rest -> visit rest (c :: acc) + in + visit chars [] |> List.to_seq |> String.of_seq + in let prop_name = Js_dump_property.property_key_string n in P.string f prop_name; P.string f "="; diff --git a/tests/tests/src/jsx_preserve_test.mjs b/tests/tests/src/jsx_preserve_test.mjs index da9c00766f..17d860d839 100644 --- a/tests/tests/src/jsx_preserve_test.mjs +++ b/tests/tests/src/jsx_preserve_test.mjs @@ -203,6 +203,10 @@ let _optional_props = } />; +let _props_with_hypen =