pyo3_stub_gen_derive/gen_stub/
renaming.rs1#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5pub enum RenamingRule {
6 CamelCase,
7 KebabCase,
8 Lowercase,
9 PascalCase,
10 ScreamingKebabCase,
11 ScreamingSnakeCase,
12 SnakeCase,
13 Uppercase,
14}
15
16impl RenamingRule {
17 pub fn try_new(name: &str) -> Option<Self> {
18 match name {
19 "camelCase" => Some(RenamingRule::CamelCase),
20 "kebab-case" => Some(RenamingRule::KebabCase),
21 "lowercase" => Some(RenamingRule::Lowercase),
22 "PascalCase" => Some(RenamingRule::PascalCase),
23 "SCREAMING-KEBAB-CASE" => Some(RenamingRule::ScreamingKebabCase),
24 "SCREAMING_SNAKE_CASE" => Some(RenamingRule::ScreamingSnakeCase),
25 "snake_case" => Some(RenamingRule::SnakeCase),
26 "UPPERCASE" => Some(RenamingRule::Uppercase),
27 _ => None,
28 }
29 }
30}
31
32impl RenamingRule {
33 pub fn apply(self, name: &str) -> String {
34 use heck::*;
35
36 match self {
37 RenamingRule::CamelCase => name.to_lower_camel_case(),
38 RenamingRule::KebabCase => name.to_kebab_case(),
39 RenamingRule::Lowercase => name.to_lowercase(),
40 RenamingRule::PascalCase => name.to_upper_camel_case(),
41 RenamingRule::ScreamingKebabCase => name.to_shouty_kebab_case(),
42 RenamingRule::ScreamingSnakeCase => name.to_shouty_snake_case(),
43 RenamingRule::SnakeCase => name.to_snake_case(),
44 RenamingRule::Uppercase => name.to_uppercase(),
45 }
46 }
47}