diff options
Diffstat (limited to 'gen/str.erl')
-rw-r--r-- | gen/str.erl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gen/str.erl b/gen/str.erl new file mode 100644 index 0000000..9625807 --- /dev/null +++ b/gen/str.erl @@ -0,0 +1,59 @@ +-module(str). +-compile(no_auto_import). +-include_lib("eunit/include/eunit.hrl"). + +-export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3]). + +length(A) -> + string:length(A). + +-ifdef(TEST). +length_test() -> + expect:equal(length(<<"ß↑e̊">>), 3), + expect:equal(length(<<"Gleam">>), 5), + expect:equal(length(<<"">>), 0). +-endif. + +lowercase(A) -> + string:lowercase(A). + +-ifdef(TEST). +lowercase_test() -> + expect:equal(lowercase(<<"Gleam">>), <<"gleam">>). +-endif. + +uppercase(A) -> + string:uppercase(A). + +-ifdef(TEST). +uppercase_test() -> + expect:equal(uppercase(<<"Gleam">>), <<"GLEAM">>). +-endif. + +reverse(String) -> + iodata:to_string(iodata:reverse(iodata:new(String))). + +-ifdef(TEST). +reverse_test() -> + expect:equal(reverse(<<"Gleam">>), <<"maelG">>). +-endif. + +split(String, On) -> + list:map(iodata:split(iodata:new(String), On), fun iodata:to_string/1). + +-ifdef(TEST). +split_test() -> + expect:equal(split(<<"Gleam,Erlang,Elixir">>, <<",">>), + [<<"Gleam">>, <<"Erlang">>, <<"Elixir">>]), + expect:equal(split(<<"Gleam, Erlang,Elixir">>, <<", ">>), + [<<"Gleam">>, <<"Erlang,Elixir">>]). +-endif. + +replace(String, Pattern, With) -> + iodata:to_string(iodata:replace(iodata:new(String), Pattern, With)). + +-ifdef(TEST). +replace_test() -> + expect:equal(replace(<<"Gleam,Erlang,Elixir">>, <<",">>, <<"++">>), + <<"Gleam++Erlang++Elixir">>). +-endif. |