@@ -419,7 +419,11 @@ fn is_lower_char(g: String) -> Bool {
419419 }
420420}
421421
422- fn camel_to_snake_loop ( chars : List ( String ) , acc : String , prev_char : String ) -> String {
422+ fn camel_to_snake_loop (
423+ chars : List ( String ) ,
424+ acc : String ,
425+ prev_char : String ,
426+ ) -> String {
423427 case chars {
424428 [ ] -> acc
425429 [ c , .. rest ] -> {
@@ -429,10 +433,14 @@ fn camel_to_snake_loop(chars: List(String), acc: String, prev_char: String) -> S
429433 [ n , .. ] -> is_lower_char ( n )
430434 [ ] -> False
431435 }
432-
433- let insert_underscore = { prev_is_lower && c_is_upper } || { is_upper_char ( prev_char ) && c_is_upper && next_is_lower }
434-
435- let new_acc = case insert_underscore && acc != "" && ! string . ends_with ( acc , "_" ) {
436+
437+ let insert_underscore =
438+ { prev_is_lower && c_is_upper }
439+ || { is_upper_char ( prev_char ) && c_is_upper && next_is_lower }
440+
441+ let new_acc = case
442+ insert_underscore && acc != "" && ! string . ends_with ( acc , "_" )
443+ {
436444 True -> acc <> "_" <> string . lowercase ( c )
437445 False -> acc <> string . lowercase ( c )
438446 }
@@ -464,12 +472,16 @@ pub fn snake_to_camel(s: String) -> String {
464472 case parts {
465473 [ ] -> ""
466474 [ first , .. rest ] -> {
467- let camel_rest = list . fold ( rest , "" , fn ( acc , part ) {
468- case string . is_empty ( part ) {
469- True -> acc
470- False -> acc <> string . uppercase ( string . slice ( part , 0 , 1 ) ) <> string . slice ( part , 1 , string . length ( part ) - 1 )
471- }
472- } )
475+ let camel_rest =
476+ list . fold ( rest , "" , fn ( acc , part ) {
477+ case string . is_empty ( part ) {
478+ True -> acc
479+ False ->
480+ acc
481+ <> string . uppercase ( string . slice ( part , 0 , 1 ) )
482+ <> string . slice ( part , 1 , string . length ( part ) - 1 )
483+ }
484+ } )
473485 string . lowercase ( first ) <> camel_rest
474486 }
475487 }
@@ -484,7 +496,10 @@ pub fn snake_to_pascal(s: String) -> String {
484496 list . fold ( parts , "" , fn ( acc , part ) {
485497 case string . is_empty ( part ) {
486498 True -> acc
487- False -> acc <> string . uppercase ( string . slice ( part , 0 , 1 ) ) <> string . slice ( part , 1 , string . length ( part ) - 1 )
499+ False ->
500+ acc
501+ <> string . uppercase ( string . slice ( part , 0 , 1 ) )
502+ <> string . slice ( part , 1 , string . length ( part ) - 1 )
488503 }
489504 } )
490505}
0 commit comments