Files
2026-06-02 01:48:05 -07:00

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
%%-----------------------------------------------------