pyo3_stub_gen_derive/gen_stub/
renaming.rs

1// The following code is copied from "pyo3-macros-backend". If it would be exported, we could reuse it here!
2
3/// Available renaming rules
4#[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}