45 lines
1.0 KiB
Plaintext
45 lines
1.0 KiB
Plaintext
|
|
|
|
%%=====================================================
|
|
%% 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
|
|
%%-----------------------------------------------------
|