diff options
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | gen/src/str.erl | 5 | ||||
-rw-r--r-- | gen/test/str_test.erl | 5 | ||||
-rw-r--r-- | src/str.gleam | 4 | ||||
-rw-r--r-- | test/str_test.gleam | 5 |
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 |