Unicode case folding and caseless matching for MoonBit
moon add moonbit-community/unicode-casefoldimport {
"moonbit-community/unicode-casefold" @casefold,
}let folded = @casefold.case_fold("Straße") // "strasse"
let same_case = @casefold.caseless_match("Straße", "STRASSE") // true
let same_text = @casefold.canonical_caseless_match("Å", "a\u{030A}") // true
let search_key = @casefold.canonical_case_fold("Å") // "a\u{030A}"
let folded_id = @casefold.nfkc_casefold("A\u{00AD}") // "a"
let same_id = @casefold.identifier_caseless_match("A\u{00AD}", "a") // true| API | Description |
|---|---|
| case_fold(StringView) -> String | Default full case folding (R4). |
| caseless_match(StringView, StringView) -> Bool | Default caseless equality, without normalization (D144). |
| canonical_case_fold(StringView) -> String | Canonical caseless comparison/search key (D145). |
| canonical_caseless_match(StringView, StringView) -> Bool | Caseless equality under canonical equivalence (D145). |
| nfkc_casefold(StringView) -> String | Official NFKC_CF mapping followed by NFC (R5). |
| identifier_caseless_match(StringView, StringView) -> Bool | Identifier caseless equality after initial NFD (D147). |
fn canonical_case_fold(s : StringView) -> Stringfn canonical_caseless_match(a : StringView, b : StringView) -> Boolfn case_fold(s : StringView) -> Stringfn caseless_match(a : StringView, b : StringView) -> Boolfn identifier_caseless_match(a : StringView, b : StringView) -> Boolfn nfkc_casefold(s : StringView) -> StringInstall
Download zipUnicode case folding and caseless matching for MoonBit