Skip to main content

alef_codegen/
naming.rs

1use heck::{ToLowerCamelCase, ToPascalCase, ToShoutySnakeCase, ToSnakeCase};
2
3/// Convert a Rust snake_case name to the target language convention.
4pub fn to_python_name(name: &str) -> String {
5    name.to_snake_case()
6}
7
8/// Convert a Rust snake_case name to Node.js/TypeScript lowerCamelCase convention.
9pub fn to_node_name(name: &str) -> String {
10    name.to_lower_camel_case()
11}
12
13/// Convert a Rust snake_case name to Ruby snake_case convention.
14pub fn to_ruby_name(name: &str) -> String {
15    name.to_snake_case()
16}
17
18/// Convert a Rust snake_case name to PHP lowerCamelCase convention.
19pub fn to_php_name(name: &str) -> String {
20    name.to_lower_camel_case()
21}
22
23/// Convert a Rust snake_case name to Elixir snake_case convention.
24pub fn to_elixir_name(name: &str) -> String {
25    name.to_snake_case()
26}
27
28/// Convert a Rust snake_case name to Go PascalCase convention.
29pub fn to_go_name(name: &str) -> String {
30    name.to_pascal_case()
31}
32
33/// Convert a Rust snake_case name to Java lowerCamelCase convention.
34pub fn to_java_name(name: &str) -> String {
35    name.to_lower_camel_case()
36}
37
38/// Convert a Rust snake_case name to C# PascalCase convention.
39pub fn to_csharp_name(name: &str) -> String {
40    name.to_pascal_case()
41}
42
43/// Convert a Rust name to a C-style prefixed snake_case identifier (e.g. `prefix_name`).
44pub fn to_c_name(prefix: &str, name: &str) -> String {
45    format!("{}_{}", prefix, name.to_snake_case())
46}
47
48/// Convert a Rust type name to class name convention for target language.
49pub fn to_class_name(name: &str) -> String {
50    name.to_pascal_case()
51}
52
53/// Convert to SCREAMING_SNAKE for constants.
54pub fn to_constant_name(name: &str) -> String {
55    name.to_shouty_snake_case()
56}