openapi_nexus/codegen/
naming_convention.rs1use std::fmt;
4use std::str::FromStr;
5
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
10pub enum NamingConvention {
11 CamelCase,
13 KebabCase,
15 SnakeCase,
17 PascalCase,
19}
20
21impl fmt::Display for NamingConvention {
22 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
23 match self {
24 Self::CamelCase => write!(f, "camelCase"),
25 Self::KebabCase => write!(f, "kebab-case"),
26 Self::SnakeCase => write!(f, "snake_case"),
27 Self::PascalCase => write!(f, "PascalCase"),
28 }
29 }
30}
31
32impl FromStr for NamingConvention {
33 type Err = String;
34
35 fn from_str(s: &str) -> Result<Self, Self::Err> {
36 match s.to_lowercase().as_str() {
37 "camelcase" | "camel-case" => Ok(Self::CamelCase),
38 "kebabcase" | "kebab-case" => Ok(Self::KebabCase),
39 "snakecase" | "snake_case" => Ok(Self::SnakeCase),
40 "pascalcase" | "pascal-case" => Ok(Self::PascalCase),
41 _ => Err(format!(
42 "Invalid naming convention: '{}'. Expected one of: camelCase, kebab-case, snake_case, PascalCase",
43 s
44 )),
45 }
46 }
47}