///|
/// Convert a string to `spongeCase`.
///
/// This uses the familiar alternating lowercase and uppercase pattern often
/// used for mocking text, while keeping non-letters untouched.
///
/// # Example
///
/// ```mbt check
/// test "sponge_case doc example" {
/// assert_eq(sponge_case("hello world"), "hElLo WoRlD")
/// assert_eq(sponge_case("test123value"), "tEsT123vAlUe")
/// assert_eq(sponge_case(""), "")
/// }
/// ```
pub fn sponge_case(text : String) -> String {
let chars = text.to_array()
let mut result = ""
let mut should_uppercase = false
for i = 0; i < chars.length(); i = i + 1 {
let char = chars[i]
if is_letter(char) {
if should_uppercase {
result = result + to_uppercase(char).to_string()
} else {
result = result + to_lowercase(char).to_string()
}
should_uppercase = !should_uppercase
} else {
result = result + char.to_string()
}
}
result
}