scsys_utils/casing/
kind.rs

1/*
2    Appellation: convention <module>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5
6#[derive(
7    Clone,
8    Copy,
9    Debug,
10    Default,
11    Eq,
12    Hash,
13    Ord,
14    PartialEq,
15    PartialOrd,
16    strum::AsRefStr,
17    strum::Display,
18    strum::EnumCount,
19    strum::EnumIs,
20    strum::EnumIter,
21    strum::EnumString,
22    strum::VariantArray,
23    strum::VariantNames,
24)]
25#[cfg_attr(
26    feature = "serde",
27    derive(serde::Deserialize, serde::Serialize,),
28    serde(rename_all = "snake_case")
29)]
30#[strum(serialize_all = "snake_case")]
31pub enum CaseType {
32    CamelCase,
33    KebabCase,
34    PascalCase,
35    #[default]
36    SnakeCase,
37}
38
39impl CaseType {
40    #[cfg(feature = "alloc")]
41    /// Converts a string to the specified case.
42    pub fn convert(&self, s: &str) -> alloc::string::String {
43        use super::utils;
44        match self {
45            Self::CamelCase => utils::to_camelcase(s),
46            Self::KebabCase => utils::to_kebabcase(s),
47            Self::PascalCase => utils::to_pascalcase(s),
48            Self::SnakeCase => utils::to_snakecase(s),
49        }
50    }
51}