10 releases
| 0.4.2 | Dec 28, 2024 |
|---|---|
| 0.4.1 | Dec 28, 2024 |
| 0.4.0 | May 15, 2023 |
| 0.3.3 | Oct 6, 2020 |
| 0.1.1 | May 7, 2019 |
#368 in Procedural macros
25,329 downloads per month
Used in 38 crates
(16 directly)
10KB
173 lines
Casey
Case transforming macros
Casey transforms the case of given input idents.
Niche but maybe useful in other macros.
use casey::{pascal, lower, shouty, snake, upper};
lower!(ABC); // renders: `abc`
upper!(abc); // `ABC`
snake!(ABC); // `a_b_c`
pascal!(ab_c); // `AbC`
shouty!(a_b_c); // `A_B_C`
Token Stream
Casey macros can operate on TokenStreams e.g.
snake!(
#[derive(PartialEq)]
struct MockStruct {}
impl MockStruct {
fn test() -> bool { true }
}
);
assert!(mock_struct::test());
assert!(mock_struct::test() == mock_struct::test())
All ident tokens in the stream will have the case transformation applied (keywords and attribute macros will be ignored).
Gotchas
Type names, including built-in types are not considered keywords e.g. bool, usize, i32 etc. and will be transformed by casey.
pascal!(let test: bool = true); // renders: `let Test: Bool = true;`
Dependencies
~150–550KB
~13K SLoC