public static SelectFromTypes ( IEnumerable |
||
types | IEnumerable |
|
Résultat | Type>>.IEnumerable |
public static ParserResult <object> Choose( Func <IEnumerable <string>, IEnumerable <OptionSpecification>, Result <IEnumerable <Token>, Error> > tokenizer, IEnumerable <Type> types, IEnumerable <string> arguments, StringComparer nameComparer, CultureInfo parsingCulture, IEnumerable <ErrorType> nonFatalErrors) { Func <ParserResult <object> > choose = () => { var firstArg = arguments.First(); Func <string, bool> preprocCompare = command => nameComparer.Equals(command, firstArg) || nameComparer.Equals(string.Concat("--", command), firstArg); var verbs = Verb.SelectFromTypes(types); return(preprocCompare("help") ? MakeNotParsed(types, MakeHelpVerbRequestedError(verbs, arguments.Skip(1).FirstOrDefault() ?? string.Empty, nameComparer)) : preprocCompare("version") ? MakeNotParsed(types, new VersionRequestedError()) : MatchVerb(tokenizer, verbs, arguments, nameComparer, parsingCulture, nonFatalErrors)); }; return(arguments.Any() ? choose() : MakeNotParsed(types, new NoVerbSelectedError())); }
public static ParserResult <object> Choose( Func <IEnumerable <string>, IEnumerable <OptionSpecification>, Result <IEnumerable <Token>, Error> > tokenizer, IEnumerable <Type> types, IEnumerable <string> arguments, StringComparer nameComparer, bool ignoreValueCase, CultureInfo parsingCulture, bool autoHelp, bool autoVersion, bool allowMultiInstance, IEnumerable <ErrorType> nonFatalErrors) { var verbs = Verb.SelectFromTypes(types); var defaultVerbs = verbs.Where(t => t.Item1.IsDefault); int defaultVerbCount = defaultVerbs.Count(); if (defaultVerbCount > 1) { return(MakeNotParsed(types, new MultipleDefaultVerbsError())); } var defaultVerb = defaultVerbCount == 1 ? defaultVerbs.First() : null; ParserResult <object> choose() { var firstArg = arguments.First(); bool preprocCompare(string command) => nameComparer.Equals(command, firstArg) || nameComparer.Equals(string.Concat("--", command), firstArg); return((autoHelp && preprocCompare("help")) ? MakeNotParsed(types, MakeHelpVerbRequestedError(verbs, arguments.Skip(1).FirstOrDefault() ?? string.Empty, nameComparer)) : (autoVersion && preprocCompare("version")) ? MakeNotParsed(types, new VersionRequestedError()) : MatchVerb(tokenizer, verbs, defaultVerb, arguments, nameComparer, ignoreValueCase, parsingCulture, autoHelp, autoVersion, allowMultiInstance, nonFatalErrors)); } return(arguments.Any() ? choose() : (defaultVerbCount == 1 ? MatchDefaultVerb(tokenizer, verbs, defaultVerb, arguments, nameComparer, ignoreValueCase, parsingCulture, autoHelp, autoVersion, nonFatalErrors) : MakeNotParsed(types, new NoVerbSelectedError()))); }
public static ParserResult <object> Choose( Func <IEnumerable <string>, IEnumerable <OptionSpecification>, StatePair <IEnumerable <Token> > > tokenizer, IEnumerable <Type> types, IEnumerable <string> arguments, StringComparer nameComparer, CultureInfo parsingCulture) { var verbs = Verb.SelectFromTypes(types); return(arguments.Empty() ? ParserResult.Create <object>( ParserResultType.Verbs, new NullInstance(), new[] { new NoVerbSelectedError() }, Maybe.Just(types)) : nameComparer.Equals("help", arguments.First()) ? ParserResult.Create <object>( ParserResultType.Verbs, new NullInstance(), new[] { CreateHelpVerbRequestedError( verbs, arguments.Skip(1).SingleOrDefault() ?? string.Empty, nameComparer) }, Maybe.Just(types)) : MatchVerb(tokenizer, verbs, arguments, nameComparer, parsingCulture)); }