aboutsummaryrefslogtreecommitdiff
path: root/src/gleam/iodata.gleam
diff options
context:
space:
mode:
Diffstat (limited to 'src/gleam/iodata.gleam')
-rw-r--r--src/gleam/iodata.gleam159
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"