zvariant_utils/
case.rs
1pub fn pascal_or_camel_case(s: &str, is_pascal_case: bool) -> String {
7 let mut result = String::new();
8 let mut capitalize = is_pascal_case;
9 let mut first = true;
10 for ch in s.chars() {
11 if ch == '_' {
12 capitalize = true;
13 } else if capitalize {
14 result.push(ch.to_ascii_uppercase());
15 capitalize = false;
16 } else if first && !is_pascal_case {
17 result.push(ch.to_ascii_lowercase());
18 } else {
19 result.push(ch);
20 }
21
22 if first {
23 first = false;
24 }
25 }
26 result
27}
28
29pub fn snake_case(s: &str) -> String {
33 let mut snake = String::new();
34 for ch in s.chars() {
35 if ch.is_ascii_uppercase() && !snake.is_empty() {
36 snake.push('_');
37 }
38 snake.push(ch.to_ascii_lowercase());
39 }
40 snake
41}