crow/string.crow (source)

char8 builtin

This could be any byte in a UTF-8 string.

char32 builtin

32-bit Unicode character.

c-string alias

C-style string. Always const.
This should be a valid pointer whose content ends in a "\0", though this is not enforced.
Thus, all operations on c-string are unsafe.

string builtin

A sequence of char32s.

(It's stored as a char8[] and is decoded as it's iterated.)
It can be efficiently concatenated or split, but doesn't support indexed access.

to char8(a nat8) bare

to nat8(a char8) bare

== bool(a char8, b char8) bare

to char8 array(a string) bare

to char32(a char8) bare

to char32 array(a string)

~~ string(a string, b string)

interpolate string(...parts string array)

interpolate char8*(...parts string array) unsafe

new string() bare

Same as "".

is-empty bool(a string) bare

Same as a == "".

size-char8s nat64(a string) bare

Size in char8s

size nat64(a string)

== bool(a string, b string)

== bool(a char32, b char32) bare

to nat32(a char32) bare

unsafe-to char32(a nat32) bare, unsafe

This is unsafe because a 'char32' should be a valid unicode character.

to char32(a nat32) bare

<=> comparison(a string, b string)

<=> comparison(a char8, b char8) bare

<=> comparison(a char32, b char32) bare

hash-mix void(hasher hasher, a string)

hash-mix void(hasher hasher, a char8)

hash-mix void(hasher hasher, a char32)

to string(a char32 array)

to string(a char8 array)

Treats UTF-8 character codes as a string. O(n) due to validation.

move-to string(a char8 mut[]) unsafe

as-string string(bytes nat8 array)

Validates that bytes are UTF-8 character codes, and returns them as a string.

to nat64(a char8) bare

to-bytes nat8 array(a string)

Treats a string as a list of UTF-8 bytes.
This is O(1).

to nat8 array(a string)

to char8*(a string) unsafe

Converts a string to a c-string by appending "\0".
This is O(n).

WARN: The resulting string is allocated from GC memory but isn't traced by the garbage collector,
so it may be freed after the current task.

as-string string(a char8*) unsafe

Treats a c-string as a string by walking to the end.

Unsafe because this does not copy the memory, and because a must end in a "\0" character.

to char8 array(a char8*) unsafe

to string(a char8*) unsafe

Unlike 'as-string' this copies the 'c-string'.

This is still unsafe because 'a' must end in a "\0" character.

show[t] spec

show string(a bool) bare

"true" or "false".

to string(a char8)

String containing a single character.

show string(a char8)

to string(a char32)

show string(a char32)

show string(a nat64)

Converts a nat64 to a string.
Result is only digits, no punctuation.

to-binary string(a nat8)

to-binary string(a nat16)

to-binary string(a nat32)

to-binary string(a nat64)

to-hex string(a nat8)

to-hex string(a nat16)

to-hex string(a nat32)

to-hex string(a nat64)

show string(a char8*) unsafe

show string(a string) bare

show string(a nat8)

show string(a nat16)

show string(a nat32)

show string(a int8)

show string(a int16)

show string(a int32)

show string(a int64)

show string(a float32)

show string(a float64)

iterate bool(a string, f mut bool(char32))

string-iterator record

(has non-public fields)

    == bool(a string-iterator, b string-iterator)

    <=> comparison(a string-iterator, b string-iterator)

    begin string-iterator(a string) bare

    end string-iterator(a string) bare

    collection string(a string-iterator) bare

    slice string(a string-iterator, b string-iterator) bare

    next (char32, string-iterator) tuple2?(a string-iterator)

    prev (string-iterator, char32) tuple2?(a string-iterator)

    string-builder record mut

    (has non-public fields)

      build string(a build-options, f mut void(string-builder))

      ~= void(a string-builder, value char32)

      ~~= void(a string-builder, s string)

      invalid-unicode-character record exception variant-member

      show string(a invalid-unicode-character)

      unicode-decode-error record exception variant-member

        show string(anonymous unicode-decode-error)

        lines string array(a string)

        lower-case string(a string)

        Lower cases every character in a.

        upper-case string(a string)

        Capitalizes every character in a.

        replace-all string(a string, find string, replace-with string)

        Replaces every instance of the substring find with replace-with.

        strip string(a string)

        Strips whitespace from both ends.

        strip-left string(a string)

        Strips whitespace from the front.

        strip-right string(a string)

        Strips whitespace from the end.

        is-whitespace bool(a char32)

        normalize-newlines string(a string)

        quote string(a string)

        Enclose a string in quotes and escape special characters.

        unindent string(a string)

        join string(joiner string, parts string array)

        Equivalent to parts[0] ~~ joiner ~~ parts[1] ~~ joiner ~~ ... ~~ parts[n].