50 lines
1.1 KiB
Plaintext
50 lines
1.1 KiB
Plaintext
/^ The CrossLang Arguments Parser ^/
|
|
class Tesses.CrossLang.Args
|
|
{
|
|
/^ Constructor ^/
|
|
public Args(args)
|
|
{
|
|
var filename = args[0];
|
|
|
|
if(args.Count < 1) return null;
|
|
var flags = [];
|
|
var options = [];
|
|
var pos = [];
|
|
|
|
var onlyPos=false;
|
|
|
|
for(var i = 1; i < args.Count; i++)
|
|
{
|
|
if(args[i] == "--") {
|
|
onlyPos=true;
|
|
continue;
|
|
}
|
|
if(!onlyPos && args[i].Count > 2 && args[i][0] == '-' && args[i][1] == '-')
|
|
{
|
|
var p = args[i].Substring(2).Split("=",true,2);
|
|
if(p.Count == 1)
|
|
flags.Add(p[0]);
|
|
else if(p.Count == 2)
|
|
options.Add({Key = p[0],Value=p[1]});
|
|
}
|
|
else {
|
|
pos.Add(args[i]);
|
|
}
|
|
}
|
|
this.Options = options;
|
|
this.FileName = filename;
|
|
this.Flags = flags;
|
|
this.Arguments = pos;
|
|
}
|
|
|
|
|
|
/^ Key value pairs --NAME=VALUE ^/
|
|
public Options;
|
|
/^ Flags --NAME ^/
|
|
public Flags;
|
|
/^ Executable name ^/
|
|
public FileName;
|
|
/^ Positional Arguments ^/
|
|
public Arguments;
|
|
}
|