ParseArguments (open)
Parse the arguments passed to a script
Syntax
LOADLIB "wh::os.whlib";
RECORD FUNCTION ParseArguments(STRING ARRAY arguments, RECORD ARRAY vars)
Parameters
STRING ARRAY arguments
The list of arguments to parse (e.g. the result of GetConsoleArguments)
RECORD ARRAY vars
A list (RECORD ARRAY) of variables to look for
defaultvalue
Default value if argument is not provided (only used for "switch" arguments)
name
The name of the variable, this will be used as the resulting record cell name
required
Should the argument be provided (only used for "param" arguments)
type
One of "switch" (returns a BOOLEAN), "stringopt" (STRING), "stringlist" (STRING ARRAY), "param" (STRING), "paramlist" (STRING ARRAY)
Return value
RECORD
A record containing the parsed variables, or a non-existing record if the arguments could not be parsed
Description
This function reads a list of script arguments and interprets them as variables with values. This function will cause an error if executed without an active console (ie, not started by runscript).
Examples
// Some example argument list
STRING consolearguments :=
"-m foo --path=/test/ --option -o- -m=bar 3 one two three";
STRING ARRAY arguments_list := Tokenize(consolearguments, " ");
// Variables we are interested in
RECORD ARRAY vars :=
[ [ name := "option", type := "switch" ]
, [ name := "o", type := "switch", defaultvalue := TRUE ]
, [ name := "p", type := "switch", defaultvalue := TRUE ]
, [ name := "m", type := "stringlist" ]
, [ name := "path", type := "stringopt" ]
, [ name := "count", type := "param" ]
, [ name := "other", type := "paramlist" ]
];
// Parse the arguments
RECORD arguments := ParseArguments(arguments_list, vars);
// Now we can access the individual arguments:
// arguments.option = TRUE
// arguments.o = FALSE
// arguments.p = TRUE
// arguments.m = [ "foo", "bar" ]
// arguments.path = "/test/"
// arguments.count = "3"
// arguments.other = [ "one", "two", "three" ]