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+ title
13+ train
14+ kebab
15+ snake
16+ shouty_snake
17+ shouty_kebab
18
19# Examples
20```
21use const_str::convert_case;
22
23const S1: &str = convert_case!(lower, "Lower Case");
24const S2: &str = convert_case!(upper, "Upper Case");
25# #[cfg(feature = "case")]
26const S3: &str = convert_case!(lower_camel, "lower camel case");
27# #[cfg(feature = "case")]
28const S4: &str = convert_case!(upper_camel, "upper camel case");
29# #[cfg(feature = "case")]
30const S5: &str = convert_case!(title, "title case");
31# #[cfg(feature = "case")]
32const S6: &str = convert_case!(train, "train case");
33# #[cfg(feature = "case")]
34const S7: &str = convert_case!(snake, "snake case");
35# #[cfg(feature = "case")]
36const S8: &str = convert_case!(kebab, "kebab case");
37# #[cfg(feature = "case")]
38const S9: &str = convert_case!(shouty_snake, "shouty snake case");
39# #[cfg(feature = "case")]
40const S10: &str = convert_case!(shouty_kebab, "shouty kebab case");
41
42assert_eq!(S1, "lower case");
43assert_eq!(S2, "UPPER CASE");
44# #[cfg(feature = "case")]
45assert_eq!(S3, "lowerCamelCase");
46# #[cfg(feature = "case")]
47assert_eq!(S4, "UpperCamelCase");
48# #[cfg(feature = "case")]
49assert_eq!(S5, "Title Case");
50# #[cfg(feature = "case")]
51assert_eq!(S6, "Train-Case");
52# #[cfg(feature = "case")]
53assert_eq!(S7, "snake_case");
54# #[cfg(feature = "case")]
55assert_eq!(S8, "kebab-case");
56# #[cfg(feature = "case")]
57assert_eq!(S9, "SHOUTY_SNAKE_CASE");
58# #[cfg(feature = "case")]
59assert_eq!(S10, "SHOUTY-KEBAB-CASE");
60```
61"#
62    };
63}
64
65#[doc = convert_case_doc!() ] // stable since 1.54
66#[cfg(not(feature = "case"))]
67#[macro_export]
68macro_rules! convert_case {
69    (lower, $s: literal) => {
70        $crate::__proc::convert_case!(lower, $s)
71    };
72    (upper, $s: literal) => {
73        $crate::__proc::convert_case!(upper, $s)
74    };
75}
76
77#[cfg_attr(docsrs, doc(cfg(any(feature = "proc", feature = "case"))))]
78#[doc = convert_case_doc!() ] // stable since 1.54
79#[cfg(feature = "case")]
80#[macro_export]
81macro_rules! convert_case {
82    (lower, $s: literal) => {
83        $crate::__proc::convert_case!(lower, $s)
84    };
85    (upper, $s: literal) => {
86        $crate::__proc::convert_case!(upper, $s)
87    };
88    (lower_camel, $s: literal) => {
89        $crate::__proc::convert_case!(lower_camel, $s)
90    };
91    (upper_camel, $s: literal) => {
92        $crate::__proc::convert_case!(upper_camel, $s)
93    };
94    (title, $s: literal) => {
95        $crate::__proc::convert_case!(title, $s)
96    };
97    (train, $s: literal) => {
98        $crate::__proc::convert_case!(train, $s)
99    };
100    (snake, $s: literal) => {
101        $crate::__proc::convert_case!(snake, $s)
102    };
103    (kebab, $s: literal) => {
104        $crate::__proc::convert_case!(kebab, $s)
105    };
106    (shouty_snake, $s: literal) => {
107        $crate::__proc::convert_case!(shouty_snake, $s)
108    };
109    (shouty_kebab, $s: literal) => {
110        $crate::__proc::convert_case!(shouty_kebab, $s)
111    };
112}