8 releases
0.4.0 | May 15, 2023 |
---|---|
0.3.3 | Oct 6, 2020 |
0.3.2 | Sep 30, 2020 |
0.3.0 | Jul 16, 2020 |
0.1.1 | May 7, 2019 |
#447 in Procedural macros
13,659 downloads per month
Used in 35 crates
(15 directly)
9KB
168 lines
Casey
Case transforming macros
Casey transforms the case of given input ident
s.
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 TokenStream
s 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
~1.5MB
~37K SLoC