diff options
Diffstat (limited to 'src/gleam/iodata.gleam')
-rw-r--r-- | src/gleam/iodata.gleam | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/src/gleam/iodata.gleam b/src/gleam/iodata.gleam deleted file mode 100644 index fe24974..0000000 --- a/src/gleam/iodata.gleam +++ /dev/null @@ -1,159 +0,0 @@ -/// Iodata is a type used for efficiently building strings. -/// -/// When we append one string to another the strings must be copied to a -/// new location in memory so that they can sit together. This behaviour -/// enables efficient reading of the string but copying can be expensive, -/// especially if we want to join many strings together. -/// -/// Iodata is different in that it can be joined together in constant time -/// using minimal memory, and then can be efficiently converted to a string -/// using the `to_string` function. -/// -pub external type Iodata - -/// Prepend a String onto the start of some Iodata. -/// -/// Runs in constant time. -/// -pub external fn prepend(to: Iodata, prefix: String) -> Iodata = - "gleam_stdlib" "iodata_prepend" - -/// Append a String onto the end of some Iodata. -/// -/// Runs in constant time. -/// -pub external fn append(to: Iodata, suffix: String) -> Iodata = - "gleam_stdlib" "iodata_append" - -/// Prepend some Iodata onto the start of another. -/// -/// Runs in constant time. -/// -pub external fn prepend_iodata(to: Iodata, prefix: Iodata) -> Iodata = - "gleam_stdlib" "iodata_prepend" - -/// Append some Iodata onto the end of another. -/// -/// Runs in constant time. -/// -pub external fn append_iodata(to: Iodata, suffix: Iodata) -> Iodata = - "gleam_stdlib" "iodata_append" - -/// Convert a list of strings into iodata. -/// -/// Runs in constant time. -/// -pub external fn from_strings(List(String)) -> Iodata = - "gleam_stdlib" "identity" - -/// Joins a list of iodata into a single iodata. -/// -/// Runs in constant time. -/// -pub external fn concat(List(Iodata)) -> Iodata = - "gleam_stdlib" "identity" - -/// Convert a string into iodata. -/// -/// Runs in constant time. -/// -pub external fn new(String) -> Iodata = - "gleam_stdlib" "identity" - -/// Turns an `Iodata` into a `String` -/// -/// This function is implemented natively by the virtual machine and is highly -/// optimised. -/// -pub external fn to_string(Iodata) -> String = - "erlang" "iolist_to_binary" - -/// Returns the size of the Iodata in bytes. -/// -pub external fn byte_size(Iodata) -> Int = - "erlang" "iolist_size" - -/// Creates textual representation of the given float as iodata. -/// -pub external fn from_float(Float) -> Iodata = - "io_lib_format" "fwrite_g" - -/// Converts Iodata to a new Iodata where valid UTF-8 string data is -/// lowercased. -/// -pub external fn lowercase(Iodata) -> Iodata = - "string" "lowercase" - -/// Converts Iodata to a new Iodata where valid UTF-8 string data is -/// uppercased. -/// -pub external fn uppercase(Iodata) -> Iodata = - "string" "uppercase" - -/// Converts Iodata to a new Iodata where valid UTF-8 string data is -/// reversed. -/// -pub external fn reverse(Iodata) -> Iodata = - "string" "reverse" - -type Direction { - All -} - -external fn erl_split(Iodata, String, Direction) -> List(Iodata) = - "string" "split" - -/// Splits iodata on a given pattern into a list of iodata. -/// -pub fn split(iodata: Iodata, on pattern: String) -> List(Iodata) { - erl_split(iodata, pattern, All) -} - -external fn erl_replace(Iodata, String, String, Direction) -> Iodata = - "string" "replace" - -/// Replaces all instances of a pattern with a given string substitute. -/// -pub fn replace( - in iodata: Iodata, - each pattern: String, - with substitute: String, -) -> Iodata { - erl_replace(iodata, pattern, substitute, All) -} - -/// Compare two pieces of iodata to determine if they have the same textual -/// content. -/// -/// Comparing two iodata using the `==` operator may return False even if they -/// have the same content as they may have been build in different ways, so -/// using this function is often preferred. -/// -/// ## Examples -/// -/// > from_strings(["a", "b"]) == new("ab") -/// False -/// -/// > is_equal(from_strings(["a", "b"]), new("ab")) -/// True -/// -/// -pub external fn is_equal(Iodata, Iodata) -> Bool = - "string" "equal" - -/// Inspect some iodata to determine if it is equivalent to an empty string. -/// -/// ## Examples -/// -/// > new("ok") |> is_empty -/// False -/// -/// > new("") |> is_empty -/// True -/// -/// > from_strings([]) |> is_empty -/// True -/// -/// -pub external fn is_empty(Iodata) -> Bool = - "string" "is_empty" |