Beispiel #1
0
        private static Dictionary<ArgumentValue, int> GetArgumentsToIndexes(string[] tokens, ArgumentValue[] arguments)
        {
            Dictionary<ArgumentValue, int> withoutDefault =
                GetWithoutDefault(tokens, arguments);

            ArgumentValue defaultParameter =
                arguments.FirstOrDefault(x => x.IsDefault);

            if (tokens.Any() &&
                (defaultParameter != null) &&
                !withoutDefault.ContainsKey(defaultParameter) &&
                !withoutDefault.ContainsValue(0))
            {
                withoutDefault[defaultParameter] = 0;
            }

            return withoutDefault;
        }
Beispiel #2
0
        private static Dictionary<ArgumentValue, int> GetWithoutDefault(string[] tokens, ArgumentValue[] arguments)
        {
            var argumentsToIndexes =
                tokens.Select
                    ((token, index) =>
                     new
                         {
                             Index = index,
                             Argument = arguments.FirstOrDefault(
                                 argument => argument.Aliases.Any(
                                     alias => token.StartsWith(alias, StringComparison.InvariantCultureIgnoreCase)))
                         })
                      .Where(x => x.Argument != null)
                      .ToDictionary(x => x.Argument,
                                    x => x.Index);

            return argumentsToIndexes;
        }
Beispiel #3
0
            public static void CheckNonOptional(ArgumentValue[] arguments)
            {
                ArgumentValue missingValue =
                    arguments.FirstOrDefault(x => !x.IsOptional && !x.HasValue);

                if (missingValue != null)
                {
                    throw new ArgumentException(
                        string.Format("The argument {0} isn't optional and has no value",
                                      missingValue.Name));
                }
            }
Beispiel #4
0
            public static void CheckConvertible(ArgumentValue[] arguments)
            {
                ArgumentValue notConvertible =
                    arguments.FirstOrDefault(x => !x.IsOptional && !typeof (IConvertible).IsAssignableFrom(x.Type));

                if (notConvertible != null)
                {
                    throw new ArgumentException(
                        string.Format("The argument {0} is of type {1} which isn't convertible",
                                      notConvertible.Name,
                                      notConvertible.Type));
                }
            }