/// <summary> /// Parses the passed arguments for both verbsets and regular verbs. /// </summary> /// <param name="parser">The <see cref="Parser"/> to use to parse the arguments.</param> /// <param name="args">The arguments to parse.</param> /// <param name="verbSetTypes">The empty verb types that should be considered as verbsets while parsing.</param> /// <param name="verbTypes">The regular verb types to parse besides the verbsets.</param> /// <param name="onVerbsetParsed">A method that is called when a verbset verb has been parsed.</param> /// <param name="helpOrVersionRequested">Whether or not the previous verbset was called with a help verb or help/version option.</param> /// <returns>A <see cref="ParserResult{T}"/> with either the verb type that was parsed or one or more <see cref="Error"/>s.</returns> public static ParserResult <object> ParseSetArguments(this Parser parser, IEnumerable <string> args, IEnumerable <Type> verbSetTypes, IEnumerable <Type> verbTypes, Func <Parser, Parsed <object>, IEnumerable <string>, bool, ParserResult <object> > onVerbsetParsed, bool helpOrVersionRequested) { if (helpOrVersionRequested) { IEnumerable <Type> verbSets = verbSetTypes ?? Enumerable.Empty <Type>(); IEnumerable <Type> verbs = verbTypes ?? Enumerable.Empty <Type>(); return(parser.ParseArguments(args, verbSets.Concat(verbs).ToArray())); } return(parser.ParseSetArguments(args, verbSetTypes, verbTypes, onVerbsetParsed)); }