vespertide_config/
name_case.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
6#[serde(rename_all = "snake_case")]
7pub enum NameCase {
8 Snake,
9 Camel,
10 Pascal,
11}
12
13impl NameCase {
14 pub fn is_snake(self) -> bool {
16 matches!(self, NameCase::Snake)
17 }
18
19 pub fn is_camel(self) -> bool {
21 matches!(self, NameCase::Camel)
22 }
23
24 pub fn is_pascal(self) -> bool {
26 matches!(self, NameCase::Pascal)
27 }
28
29 pub fn serde_rename_all(self) -> &'static str {
31 match self {
32 NameCase::Snake => "snake_case",
33 NameCase::Camel => "camelCase",
34 NameCase::Pascal => "PascalCase",
35 }
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn test_serde_rename_all() {
45 assert_eq!(NameCase::Snake.serde_rename_all(), "snake_case");
46 assert_eq!(NameCase::Camel.serde_rename_all(), "camelCase");
47 assert_eq!(NameCase::Pascal.serde_rename_all(), "PascalCase");
48 }
49}