Sha256: 9c0578bc9274f11d07942aa813626729c231c717acb340ef21a0799a0706ce5f

Contents?: true

Size: 1.01 KB

Versions: 123

Compression:

Stored size: 1.01 KB

Contents

-module(example).

-export([response/1, test_version/0]).

-spec response(string()) -> string().
response(String) ->
  first_match(
    trim(String),
    [{fun is_silent/1, "Fine. Be that way!"},
     {fun is_shouting/1, "Whoa, chill out!"},
     {fun is_question/1, "Sure."},
     {fun (_) -> true end, "Whatever."}]).

test_version() ->
    2.



first_match(S, [{F, Res} | Fs]) ->
    case F(S) of
        true -> Res;
        false -> first_match(S, Fs)
    end.

is_shouting(String) ->
    lists:any(fun (C) -> C >= $A andalso C =< $Z end, String) andalso
    string:to_upper(String) =:= String.

is_question(String) ->
    lists:last(String) =:= $?.

is_silent("") -> true;
is_silent(_) -> false.

trim(String) ->
    trim_left(trim_right(String)).

trim_left("") -> "";
trim_left([$\s|T]) -> trim_left(T);
trim_left([$\t|T]) -> trim_left(T);
trim_left([$\n|T]) -> trim_left(T);
trim_left([$\r|T]) -> trim_left(T);
trim_left(S) -> S.

trim_right(S) ->
    S1 = lists:reverse(S),
    S2 = trim_left(S1),
    lists:reverse(S2).

Version data entries

123 entries across 123 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.179 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.178 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.177 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.176 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.175 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.174 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.173 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.172 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.171 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.170 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.169 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.167 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.166 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.165 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.164 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.163 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.162 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.161 tracks/erlang/exercises/bob/src/example.erl
trackler-2.2.1.160 tracks/erlang/exercises/bob/src/example.erl