4using System.Collections.Generic;
5using System.Globalization;
17 Func<IEnumerable<string>, IEnumerable<OptionSpecification>,
Result<IEnumerable<Token>,
Error>> tokenizer,
18 IEnumerable<Type> types,
19 IEnumerable<string> arguments,
20 StringComparer nameComparer,
22 CultureInfo parsingCulture,
25 IEnumerable<ErrorType> nonFatalErrors)
41 Func<IEnumerable<string>, IEnumerable<OptionSpecification>,
Result<IEnumerable<Token>,
Error>> tokenizer,
42 IEnumerable<Type> types,
43 IEnumerable<string> arguments,
44 StringComparer nameComparer,
46 CultureInfo parsingCulture,
49 bool allowMultiInstance,
50 IEnumerable<ErrorType> nonFatalErrors)
53 IEnumerable<Tuple<Verb, Type>> defaultVerbs = verbs.Where(t => t.Item1.IsDefault);
55 int defaultVerbCount = defaultVerbs.Count();
57 if (defaultVerbCount > 1)
62 Tuple<Verb, Type> defaultVerb = defaultVerbCount == 1 ? defaultVerbs.First() :
null;
66 string firstArg = arguments.First();
68 bool preprocCompare(
string command)
70 return nameComparer.Equals(command, firstArg) ||
71 nameComparer.Equals(
string.Concat(
"--", command), firstArg);
74 return autoHelp && preprocCompare(
"help") ?
MakeNotParsed(types,
97 return arguments.Any() ? choose() :
113 Func<IEnumerable<string>, IEnumerable<OptionSpecification>,
Result<IEnumerable<Token>,
Error>> tokenizer,
114 IEnumerable<Tuple<Verb, Type>> verbs,
115 Tuple<Verb, Type> defaultVerb,
116 IEnumerable<string> arguments,
117 StringComparer nameComparer,
118 bool ignoreValueCase,
119 CultureInfo parsingCulture,
122 IEnumerable<ErrorType> nonFatalErrors)
124 return !(defaultVerb is
null)
139 Func<IEnumerable<string>, IEnumerable<OptionSpecification>,
Result<IEnumerable<Token>,
Error>> tokenizer,
140 IEnumerable<Tuple<Verb, Type>> verbs,
141 Tuple<Verb, Type> defaultVerb,
142 IEnumerable<string> arguments,
143 StringComparer nameComparer,
144 bool ignoreValueCase,
145 CultureInfo parsingCulture,
148 bool allowMultiInstance,
149 IEnumerable<ErrorType> nonFatalErrors)
151 string firstArg = arguments.First();
153 Tuple<Verb, Type> verbUsed = verbs.FirstOrDefault(vt =>
154 nameComparer.Equals(vt.Item1.Name, firstArg) ||
155 vt.Item1.Aliases.Any(alias =>
156 nameComparer.Equals(alias, firstArg)
160 if (verbUsed ==
default)
190 StringComparer nameComparer)
192 return verb.Length > 0
193 ? verbs.SingleOrDefault(v => nameComparer.Equals(v.Item1.Name, verb))
The Maybe type models an optional value. A value of type Maybe a either contains a value of type a (r...
Models an error generated when an unknown verb is detected.
static HelpVerbRequestedError MakeHelpVerbRequestedError(IEnumerable< Tuple< Verb, Type > > verbs, string verb, StringComparer nameComparer)
static ParserResult< object > MatchVerb(Func< IEnumerable< string >, IEnumerable< OptionSpecification >, Result< IEnumerable< Token >, Error > > tokenizer, IEnumerable< Tuple< Verb, Type > > verbs, Tuple< Verb, Type > defaultVerb, IEnumerable< string > arguments, StringComparer nameComparer, bool ignoreValueCase, CultureInfo parsingCulture, bool autoHelp, bool autoVersion, bool allowMultiInstance, IEnumerable< ErrorType > nonFatalErrors)
static ParserResult< object > MatchDefaultVerb(Func< IEnumerable< string >, IEnumerable< OptionSpecification >, Result< IEnumerable< Token >, Error > > tokenizer, IEnumerable< Tuple< Verb, Type > > verbs, Tuple< Verb, Type > defaultVerb, IEnumerable< string > arguments, StringComparer nameComparer, bool ignoreValueCase, CultureInfo parsingCulture, bool autoHelp, bool autoVersion, IEnumerable< ErrorType > nonFatalErrors)
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, IEnumerable< ErrorType > nonFatalErrors)
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)
static NotParsed< object > MakeNotParsed(IEnumerable< Type > types, params Error[] errors)
static IEnumerable< Tuple< Verb, Type > > SelectFromTypes(IEnumerable< Type > types)
Models an error generated when a user explicitly requests help in verb commands scenario.
Models an error generated when multiple default verbs are defined.
Models an error generated when no verb is selected.
It contains a sequence of CommandLine.Error.
Models a null result when constructing a ParserResult<T> in a faling verbs scenario.
Models a parser result. When inherited by CommandLine.Parsed<T>, it contains an instance of type T w...
static TypeInfo Create(Type current)
Models an error generated when a user explicitly requests version.
Represents the result of a computation.