const_str/__proc/
case.rs

1pub use const_str_proc_macro::convert_case;
2
3macro_rules! convert_case_doc {
4    () => {
5        r#"
6Converts a string literal to a specified case.
7
8These variants require the feature `case`.
9
10+ lower_camel
11+ upper_camel
12+ kebab
13+ snake
14+ shouty_snake
15+ shouty_kebab
16
17# Examples
18```
19use const_str::convert_case;
20
21const S1: &str = convert_case!(lower, "Lower Case");
22const S2: &str = convert_case!(upper, "Upper Case");
23# #[cfg(feature = "case")]
24const S3: &str = convert_case!(lower_camel, "lower camel case");
25# #[cfg(feature = "case")]
26const S4: &str = convert_case!(upper_camel, "upper camel case");
27# #[cfg(feature = "case")]
28const S5: &str = convert_case!(snake, "snake case");
29# #[cfg(feature = "case")]
30const S6: &str = convert_case!(kebab, "kebab case");
31# #[cfg(feature = "case")]
32const S7: &str = convert_case!(shouty_snake, "shouty snake case");
33# #[cfg(feature = "case")]
34const S8: &str = convert_case!(shouty_kebab, "shouty kebab case");
35
36assert_eq!(S1, "lower case");
37assert_eq!(S2, "UPPER CASE");
38# #[cfg(feature = "case")]
39assert_eq!(S3, "lowerCamelCase");
40# #[cfg(feature = "case")]
41assert_eq!(S4, "UpperCamelCase");
42# #[cfg(feature = "case")]
43assert_eq!(S5, "snake_case");
44# #[cfg(feature = "case")]
45assert_eq!(S6, "kebab-case");
46# #[cfg(feature = "case")]
47assert_eq!(S7, "SHOUTY_SNAKE_CASE");
48# #[cfg(feature = "case")]
49assert_eq!(S8, "SHOUTY-KEBAB-CASE");
50```
51"#
52    };
53}
54
55#[doc = convert_case_doc!() ] // stable since 1.54
56#[cfg(not(feature = "case"))]
57#[macro_export]
58macro_rules! convert_case {
59    (lower, $s: literal) => {
60        $crate::__proc::convert_case!(lower, $s)
61    };
62    (upper, $s: literal) => {
63        $crate::__proc::convert_case!(upper, $s)
64    };
65}
66
67#[cfg_attr(docsrs, doc(cfg(any(feature = "proc", feature = "case"))))]
68#[doc = convert_case_doc!() ] // stable since 1.54
69#[cfg(feature = "case")]
70#[macro_export]
71macro_rules! convert_case {
72    (lower, $s: literal) => {
73        $crate::__proc::convert_case!(lower, $s)
74    };
75    (upper, $s: literal) => {
76        $crate::__proc::convert_case!(upper, $s)
77    };
78    (lower_camel, $s: literal) => {
79        $crate::__proc::convert_case!(lower_camel, $s)
80    };
81    (upper_camel, $s: literal) => {
82        $crate::__proc::convert_case!(upper_camel, $s)
83    };
84    (snake, $s: literal) => {
85        $crate::__proc::convert_case!(snake, $s)
86    };
87    (kebab, $s: literal) => {
88        $crate::__proc::convert_case!(kebab, $s)
89    };
90    (shouty_snake, $s: literal) => {
91        $crate::__proc::convert_case!(shouty_snake, $s)
92    };
93    (shouty_kebab, $s: literal) => {
94        $crate::__proc::convert_case!(shouty_kebab, $s)
95    };
96}