SelectFromTypes() public static méthode

public static SelectFromTypes ( IEnumerable types ) : Type>>.IEnumerable
types IEnumerable
Résultat Type>>.IEnumerable
Exemple #1
0
        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())));
        }
Exemple #3
0
        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));
        }