Files
crosslangextras/Tesses.CrossLang.Args/src/args.tcross

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;
}