private static void ParseArgument(string argument,RawArguments raw) { var flagMatch = FlagMatcher.Match(argument); if (flagMatch.Success) { var name = flagMatch.Groups["name"].Value; if (raw._flags.Add(name)) { return; } throw new ArgumentException(); } var namedArgumentMatch = NamedArgumentMatcher.Match(argument); if (namedArgumentMatch.Success) { var name = namedArgumentMatch.Groups["name"].Value; var value = namedArgumentMatch.Groups["value"].Value; if (raw._namedArguments.ContainsKey(name)) { throw new ArgumentException(); } raw._namedArguments.Add(name, value); return; } raw._positionalArguments.Add(argument); }
private static RawArguments ParseCore(string[] arguments) { var raw = new RawArguments(); foreach (var argument in arguments) { ParseArgument(argument, raw); } return raw; }