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