

%%=====================================================
%% ARG PARSING
%%=====================================================


%%-----------------------------------------------------
%% TOKENIZING
%%-----------------------------------------------------

-record{ctk,
        {shape = none :: none | '-'      | '--'     | str,
         val   = none :: none | [char()] | string() | string(),
         str   = none :: none | string()}).
-type ctk() :: #ctk{}.



-spec tokenize(Args) -> CliTokens when
        Args      :: [string()],
        CliTokens :: [ctk()].
%% @private tokenize cli args

tokenize(Args) ->
    [tokenize_arg(S) || S <- Args].

tokenize_arg(Str = "--" ++ Val) ->
    #ctk{shape = '--',
         val   = Val,
         str   = Str};
tokenize_arg(Str = "-" ++ Val) ->
    #ctk{shape = '-',
         val   = Val,
         str   = Str};
tokenize_arg(Str) ->
    #ctk{shape = str,
         val   = none,
         str   = Str}.


%%-----------------------------------------------------
%% PARSING
%%-----------------------------------------------------
