log_monitor/apps/log_monitor/src/utils.erl

50 lines
1.4 KiB
Erlang

%%%-------------------------------------------------------------------
%%% @author Fabio Salvini <fs@fabiosalvini.com>
%%% @copyright (C) 2017, Fabio Salvini
%%% @doc
%%%
%%% @end
%%% Created : 2 Jul 2017 by Fabio Salvini <fs@fabiosalvini.com>
%%%-------------------------------------------------------------------
-module(utils).
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").
-endif.
%% API
-export([flatten/1]).
%%%===================================================================
%%% API
%%%===================================================================
%%--------------------------------------------------------------------
%% @doc
%% Flattens a list.
%%
%% @spec flatten(X) -> list()
%% @end
%%--------------------------------------------------------------------
flatten(X) -> flatten(X,[]).
%%%===================================================================
%%% Internal functions
%%%===================================================================
flatten([],Acc) -> Acc;
flatten([[]|T],Acc) -> flatten(T, Acc);
flatten([[_|_]=H|T],Acc) -> flatten(T, flatten(H,Acc));
flatten([H|T],Acc) -> flatten(T,Acc++[H]) .
%%%===================================================================
%%% Tests
%%%===================================================================
-ifdef(TEST).
flatten_test() ->
?assertEqual([], flatten([])),
?assertEqual([1,2,3], flatten([1,2,3])),
?assertEqual([1,2,3], flatten([[1],[2,3]])).
-endif.