Example #1
0
        internal static ArgumentConversionResult ConvertIfNeeded(
            this OptionResult optionResult,
            Type type)
        {
            if (optionResult == null)
            {
                throw new ArgumentNullException(nameof(optionResult));
            }

            return(optionResult.ArgumentConversionResult
                   .ConvertIfNeeded(optionResult, type));
        }
        internal static FailedArgumentConversionArityResult Validate(
            SymbolResult symbolResult,
            IArgument argument,
            int minimumNumberOfValues,
            int maximumNumberOfValues)
        {
            var argumentResult = symbolResult switch
            {
                CommandResult commandResult => commandResult.Root.FindResultFor(argument),
                OptionResult optionResult => optionResult.Children.ResultFor(argument),
                _ => symbolResult
            };

            var tokenCount = argumentResult?.Tokens.Count ?? 0;

            if (tokenCount < minimumNumberOfValues)
            {
                if (symbolResult.UseDefaultValueFor(argument))
                {
                    return(null);
                }

                return(new MissingArgumentConversionResult(
                           argument,
                           symbolResult.ValidationMessages.RequiredArgumentMissing(symbolResult)));
            }

            if (tokenCount > maximumNumberOfValues)
            {
                if (maximumNumberOfValues == 1)
                {
                    return(new TooManyArgumentsConversionResult(
                               argument,
                               symbolResult.ValidationMessages.ExpectsOneArgument(symbolResult)));
                }
                else
                {
                    return(new TooManyArgumentsConversionResult(
                               argument,
                               symbolResult.ValidationMessages.ExpectsFewerArguments(
                                   symbolResult.Tokens.Last(),
                                   tokenCount,
                                   maximumNumberOfValues)));
                }
            }

            return(null);
        }
Example #3
0
        internal static ArgumentResult GetValueAs(
            this OptionResult optionResult,
            Type type)
        {
            if (optionResult == null)
            {
                throw new ArgumentNullException(nameof(optionResult));
            }

            if (type == null)
            {
                type = typeof(object);
            }

            return(optionResult.ArgumentResult.GetValueAs(type));
        }
Example #4
0
 public static T GetValueOrDefault <T>(this OptionResult optionResult)
 {
     return(optionResult.GetValueAs(typeof(T)).GetValueOrDefault <T>());
 }
Example #5
0
 public static object GetValueOrDefault(this OptionResult optionResult)
 {
     return(optionResult.GetValueOrDefault <object>());
 }
Example #6
0
 public static T GetValueOrDefault <T>(this OptionResult optionResult)
 {
     return(optionResult.ConvertIfNeeded(typeof(T))
            .GetValueOrDefault <T>());
 }
Example #7
0
 internal void AddImplicitOption(IOption option)
 {
     Children.Add(OptionResult.CreateImplicit(option, this));
 }