1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! heckle is a meme case conversion library.
//!
//! This library exists to facilitate lulz with meme cases, such as spONgEBoB caSE and BILLY MAYS
//! MODE. It is intended to be unicode-aware, internally consistent-ish, and reasonably useless.
//!
//! # Definition of a word boundary
//! Unlike the popular and useful heck library, we do not care about word boundaries. In fact, in
//! BILLY MAYS MODE, we drop non-alphabetic, non-whitespace characters because we don't
//! think it matters anyway.
//!
//! # Cases contained in this library:
//! ## sPoNGeBoB CAsE
//! Randomly alternates letter casing with no more than 3 consecutive same-case characters. If you
//! want more than 3 characters, too bad, I hardcoded it.
//! Also it's not really random because I hardedcoded the RNG to always be seeded with 42.
//! That's the answer to life, the universe, and everything, and I think it's the answer to meme
//! case RNG seeding, too.
//!
//! ```
//! use heckle::ToSpongebobCase;
//! assert_eq!("hello world".to_spongebob_case(), "HELlo wORLd");
//! ```
//!
//! ## BILLY MAYS MODE
//! Uppercases every character that has a case, dropping non-alphabetic, non-whitespace characters. BUT WAIT! you
//! might say; well, too bad, no more.
//!
//! ```
//! use heckle::ToBillyMaysMode;
//! assert_eq!("wait, there's more!!!".to_billy_mays_mode(), "WAIT THERES MORE");
//! ```
//!
//! # A Note on AI Usage
//! This is pure vibe-coded slop. Thanks, Claude!
pub use ;
pub use ;
/// Returns `true` if `ch` has a case conversion that actually changes the codepoint.
///
/// Some characters report `is_uppercase()` / `is_lowercase()` as `true` yet have no
/// actual mapping in Rust's tables (e.g. mathematical Fraktur/script letters). This
/// helper gates on whether the conversion *actually produces a different codepoint*.
/// The conversion may be multi-char (ligatures that decompose on uppercasing, etc.).
/// Used by Billy Mays, which uppercases every char that can be uppercased.
pub
/// Returns `true` if `ch` has a *single-codepoint* case conversion that changes it.
///
/// Stricter than `char_has_case`: ligatures and other chars whose `to_uppercase` /
/// `to_lowercase` decompose into multiple codepoints return `false`. Used by Spongebob
/// so that the run counter and case conversion are always 1-char-in / 1-char-out,
/// keeping the "no more than 3 consecutive same-case chars" invariant unambiguous.
pub