aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2020-03-05 11:24:57 +0000
committerLouis Pilfold <louis@lpil.uk>2020-03-05 11:24:57 +0000
commite8b2a22b47a0a7677aae55d25a2bacf3969cc788 (patch)
treef3cef3896d7bce0b901309d76141c74373bd75bc
parent063c640b5e59c00262fd17b62c33dc470c1e1863 (diff)
downloadgleam_stdlib-e8b2a22b47a0a7677aae55d25a2bacf3969cc788.tar.gz
gleam_stdlib-e8b2a22b47a0a7677aae55d25a2bacf3969cc788.zip
string.concat
-rw-r--r--gen/src/gleam@string.erl5
-rw-r--r--gen/test/gleam@string_test.erl8
-rw-r--r--src/gleam/string.gleam6
-rw-r--r--test/gleam/string_test.gleam8
4 files changed, 25 insertions, 2 deletions
diff --git a/gen/src/gleam@string.erl b/gen/src/gleam@string.erl
index 722ea09..c94fb9f 100644
--- a/gen/src/gleam@string.erl
+++ b/gen/src/gleam@string.erl
@@ -1,7 +1,7 @@
-module(gleam@string).
-compile(no_auto_import).
--export([length/1, lowercase/1, uppercase/1, compare/2, reverse/1, split/2, replace/3, append/2]).
+-export([length/1, lowercase/1, uppercase/1, compare/2, reverse/1, split/2, replace/3, append/2, concat/1]).
length(A) ->
string:length(A).
@@ -33,3 +33,6 @@ append(First, Second) ->
gleam@iodata:to_string(
gleam@iodata:append(gleam@iodata:new(First), Second)
).
+
+concat(Strings) ->
+ gleam@iodata:to_string(gleam@iodata:from_strings(Strings)).
diff --git a/gen/test/gleam@string_test.erl b/gen/test/gleam@string_test.erl
index e28f696..777c498 100644
--- a/gen/test/gleam@string_test.erl
+++ b/gen/test/gleam@string_test.erl
@@ -1,7 +1,7 @@
-module(gleam@string_test).
-compile(no_auto_import).
--export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, append_test/0, compare_test/0]).
+-export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, append_test/0, compare_test/0, concat_test/0]).
length_test() ->
gleam@expect:equal(gleam@string:length(<<"ß↑e̊">>), 3),
@@ -45,3 +45,9 @@ compare_test() ->
gleam@expect:equal(gleam@string:compare(<<"a">>, <<"A">>), gt),
gleam@expect:equal(gleam@string:compare(<<"A">>, <<"B">>), lt),
gleam@expect:equal(gleam@string:compare(<<"t">>, <<"ABC">>), gt).
+
+concat_test() ->
+ gleam@expect:equal(
+ gleam@string:concat([<<"Hello">>, <<", ">>, <<"world!">>]),
+ <<"Hello, world!">>
+ ).
diff --git a/src/gleam/string.gleam b/src/gleam/string.gleam
index 92d46b6..14619bf 100644
--- a/src/gleam/string.gleam
+++ b/src/gleam/string.gleam
@@ -42,3 +42,9 @@ pub fn append(to first: String, suffix second: String) -> String {
|> iodata.append(_, second)
|> iodata.to_string
}
+
+pub fn concat(strings: List(String)) -> String {
+ strings
+ |> iodata.from_strings
+ |> iodata.to_string
+}
diff --git a/test/gleam/string_test.gleam b/test/gleam/string_test.gleam
index 15a30f8..f4f9089 100644
--- a/test/gleam/string_test.gleam
+++ b/test/gleam/string_test.gleam
@@ -66,3 +66,11 @@ pub fn compare_test() {
string.compare("t", "ABC")
|> expect.equal(_, order.Gt)
}
+
+pub fn concat_test() {
+ [
+ "Hello", ", ", "world!",
+ ]
+ |> string.concat
+ |> expect.equal(_, "Hello, world!")
+}