unicode-normalization

    Unicode normalization forms for MoonBit

    unicode
    normalization
    nfc
    nfd
    nfkc
    nfkd
    Download zip
    Version
    0.7.1
    License
    Apache-2.0
    Last updated
    8 days ago
    Downloads
    17K

    #unicode-normalization

    Unicode NFC, NFD, NFKC, and NFKD normalization for MoonBit, using Unicode 18.0.0 data from moonbit-community/unicode-data.

    moon add moonbit-community/unicode-normalization

    See the repository root README for API documentation and examples.

    All text inputs accept StringView, including slices of larger strings. Existing calls with String arguments work through automatic view conversion. Text-producing operations still return String.

    NormalizationForm

    pub(all) enum NormalizationForm {
    NFD
    NFC
    NFKD
    NFKC
    } derive(Eq)

    Normalization form enumeration

    NormalizationForm::equal

    NormalizationForm::not_equal

    fn NormalizationForm::not_equal(x : NormalizationForm, y : NormalizationForm) -> Bool

    NormalizationForm::output

    fn NormalizationForm::output(self : NormalizationForm, logger : &Logger) -> Unit

    NormalizationForm::to_string

    fn NormalizationForm::to_string(self : NormalizationForm) -> String

    is_normalized

    fn is_normalized(s : StringView, form : NormalizationForm) -> Bool

    Check if a string is in the specified normalization form

    nfc

    fn nfc(s : StringView) -> String

    Normalize a string to NFC (Canonical Decomposition + Composition)

    Characters are first decomposed canonically, reordered, then recomposed using canonical composition rules. This is the most commonly used normalization form.

    nfd

    fn nfd(s : StringView) -> String

    Normalize a string to NFD (Canonical Decomposition)

    Characters are decomposed to their canonical equivalents and combining marks are reordered by Canonical Combining Class.

    nfkc

    fn nfkc(s : StringView) -> String

    Normalize a string to NFKC (Compatibility Decomposition + Composition)

    Characters are decomposed to compatibility equivalents, reordered, then recomposed. Often used for identifier comparison.

    nfkd

    fn nfkd(s : StringView) -> String

    Normalize a string to NFKD (Compatibility Decomposition)

    Characters are decomposed to their compatibility equivalents (including formatting variants like superscripts, fractions, etc.) and combining marks are reordered.

    normalize

    fn normalize(s : StringView, form : NormalizationForm) -> String

    Normalize a string to the specified form