aboutsummaryrefslogtreecommitdiff
path: root/src/iodata.gleam
blob: 4d81e387f4362897baafe883ef9496dae9f2df31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import any
import expect

pub external type Iodata;

pub external fn prepend(Iodata, String) -> Iodata =
  "gleam__stdlib" "iodata_prepend";

pub external fn append(Iodata, String) -> Iodata =
  "gleam__stdlib" "iodata_append";

pub external fn from(List(String)) -> Iodata =
  "gleam__stdlib" "identity";

pub external fn to_string(Iodata) -> String =
  "erlang" "iolist_to_binary";

pub external fn byte_size(Iodata) -> Int =
  "erlang" "iolist_size";

test iodata {
  let iodata = from(["ello"])
    |> append(_, ",")
    |> append(_, " world!")
    |> prepend(_, "H")

  expect:equal(to_string(iodata), "Hello, world!")
  expect:equal(byte_size(iodata), 13)
}