public ParsedArguments(string[] args, ArgumentInfo[] validArgumentInfos) { this.parsedArguments = new Dictionary<string, string>(); if (args.Length == 0) { this.Status = ArgumentParseStatus.Success; this.Message = "No arguments"; return; } ArgumentInfoHash validArguments = new ArgumentInfoHash(validArgumentInfos); foreach (string argument in args) { string arg = argument.Trim(); if (!arg.StartsWith("/") || !(arg.Length > 1)) { Message = "Unrecognized argument format: " + arg; Status = ArgumentParseStatus.Error; } else { string[] nameValue = arg.Substring(1, arg.Length - 1).Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string name = string.Empty; if (nameValue.Length > 0) name = nameValue[0]; // allow ":" in arg value if (nameValue.Length > 2) { int startIndex = arg.IndexOf(":") + 1; nameValue = new string[] { name, arg.Substring(startIndex, arg.Length - startIndex) }; } if (nameValue.Length == 1 && validArguments[name] != null) { if (validArguments[name].AllowNullValue) parsedArguments.Add(name, "true"); else Message = "No value specified for " + name; } if (nameValue.Length == 2) { if (validArguments[name] == null) { Message = "Invalid argument name specified"; Status = ArgumentParseStatus.Error; } else { if (parsedArguments.ContainsKey(name)) parsedArguments[name] = nameValue[1]; else parsedArguments.Add(name, nameValue[1]); } } } } if (Status != ArgumentParseStatus.Error) Status = ArgumentParseStatus.Success; }
public ParsedArguments(string[] args, ArgumentInfo[] validArgumentInfos) { this.parsedArguments = new Dictionary <string, string>(); if (args.Length == 0) { this.Status = ArgumentParseStatus.Success; this.Message = "No arguments"; return; } ArgumentInfoHash validArguments = new ArgumentInfoHash(validArgumentInfos); foreach (string argument in args) { string arg = argument.Trim(); if (!arg.StartsWith("/") || !(arg.Length > 1)) { Message = "Unrecognized argument format: " + arg; Status = ArgumentParseStatus.Error; } else { string[] nameValue = arg.Substring(1, arg.Length - 1).Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string name = string.Empty; if (nameValue.Length > 0) { name = nameValue[0]; } // allow ":" in arg value if (nameValue.Length > 2) { int startIndex = arg.IndexOf(":") + 1; nameValue = new string[] { name, arg.Substring(startIndex, arg.Length - startIndex) }; } if (nameValue.Length == 1 && validArguments[name] != null) { if (validArguments[name].AllowNullValue) { parsedArguments.Add(name, "true"); } else { Message = "No value specified for " + name; } } if (nameValue.Length == 2) { if (validArguments[name] == null) { Message = "Invalid argument name specified"; Status = ArgumentParseStatus.Error; } else { if (parsedArguments.ContainsKey(name)) { parsedArguments[name] = nameValue[1]; } else { parsedArguments.Add(name, nameValue[1]); } } } } } if (Status != ArgumentParseStatus.Error) { Status = ArgumentParseStatus.Success; } }