aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Peterson <robert.peterson@gmail.com>2019-04-18 07:38:28 -0700
committerLouis Pilfold <louis@lpil.uk>2019-04-18 16:16:05 +0100
commitf2b09ca44f9448cf351093abdf50f9bb6e411423 (patch)
tree40ab49c7586516f796f0ccc359ca035da7b0af3c
parentaecd1d23fc3fa3bb5bf5749770ef8b9b7a9ee068 (diff)
downloadgleam_stdlib-f2b09ca44f9448cf351093abdf50f9bb6e411423.tar.gz
gleam_stdlib-f2b09ca44f9448cf351093abdf50f9bb6e411423.zip
Add str:append
-rw-r--r--CHANGELOG.md1
-rw-r--r--gen/src/str.erl5
-rw-r--r--gen/test/str_test.erl5
-rw-r--r--src/str.gleam4
-rw-r--r--test/str_test.gleam5
5 files changed, 18 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1caaa8b..cebfd5b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@
- `list` module gains `at`, `all`, `any`, `intersperse`, `unique`, `sort`, and
`zip` functions.
+- `str` module gains `append`.
## v0.1.1 - 2019-04-17
diff --git a/gen/src/str.erl b/gen/src/str.erl
index b492c86..4a35a35 100644
--- a/gen/src/str.erl
+++ b/gen/src/str.erl
@@ -1,7 +1,7 @@
-module(str).
-compile(no_auto_import).
--export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, from_int/1, parse_int/1, parse_float/1, base_from_int/2, from_float/1]).
+-export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, append/2, from_int/1, parse_int/1, parse_float/1, base_from_int/2, from_float/1]).
length(A) ->
string:length(A).
@@ -21,6 +21,9 @@ split(String, On) ->
replace(String, Pattern, With) ->
iodata:to_string(iodata:replace(iodata:new(String), Pattern, With)).
+append(S1, S2) ->
+ iodata:to_string(iodata:append(iodata:new(S1), S2)).
+
from_int(A) ->
erlang:integer_to_binary(A).
diff --git a/gen/test/str_test.erl b/gen/test/str_test.erl
index 0048ce8..b3a89b2 100644
--- a/gen/test/str_test.erl
+++ b/gen/test/str_test.erl
@@ -1,7 +1,7 @@
-module(str_test).
-compile(no_auto_import).
--export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, from_int_test/0, parse_int_test/0, parse_float_test/0, base_from_int_test/0, from_float_test/0]).
+-export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, append_test/0, from_int_test/0, parse_int_test/0, parse_float_test/0, base_from_int_test/0, from_float_test/0]).
length_test() ->
expect:equal(str:length(<<"ß↑e̊">>), 3),
@@ -27,6 +27,9 @@ replace_test() ->
expect:equal(str:replace(<<"Gleam,Erlang,Elixir">>, <<",">>, <<"++">>),
<<"Gleam++Erlang++Elixir">>).
+append_test() ->
+ expect:equal(str:append(<<"Test">>, <<" Me">>), <<"Test Me">>).
+
from_int_test() ->
expect:equal(str:from_int(123), <<"123">>),
expect:equal(str:from_int(-123), <<"-123">>),
diff --git a/src/str.gleam b/src/str.gleam
index 00268f8..8a7708b 100644
--- a/src/str.gleam
+++ b/src/str.gleam
@@ -34,6 +34,10 @@ pub fn replace(string, pattern, with) {
|> iodata:to_string
}
+pub fn append(s1, s2) {
+ iodata:new(s1) |> iodata:append(_, s2) |> iodata:to_string(_)
+}
+
pub external fn from_int(Int) -> String = "erlang" "integer_to_binary"
pub external fn parse_int(String) -> Result(Int, ParseError) = "gleam__stdlib" "parse_int";
diff --git a/test/str_test.gleam b/test/str_test.gleam
index 13d781c..49e45e7 100644
--- a/test/str_test.gleam
+++ b/test/str_test.gleam
@@ -43,6 +43,11 @@ pub fn replace_test() {
|> expect:equal(_, "Gleam++Erlang++Elixir")
}
+pub fn append_test() {
+ str:append("Test", " Me")
+ |> expect:equal(_, "Test Me")
+}
+
pub fn from_int_test() {
123
|> str:from_int