Exemple #1
0
        /// <summary>
        /// Tries to parses the option at index <paramref name="currentIndex"/>.
        /// Sets the out parameters indicating option name and option value, and returns amount of how many arguments have been processed.
        /// </summary>
        /// <param name="args">All command-line options.</param>
        /// <param name="currentIndex">The current index for <paramref name="args"/>.</param>
        /// <param name="parsedOptions">The parsed options from the command line argument.</param>
        /// <returns>
        /// How many arguments processed in <paramref name="args"/>.
        /// Value of <c>0</c> means that current argument is not an option.
        /// Values less than <c>0</c> are considered to be <c>0</c>.
        /// </returns>
        public Int32 TryParseOption(IList <String> args, Int32 currentIndex, OptionModel optionModel, out String optionName, out String optionValueStr, out Object optionValueTyped, out String errorMessage)
        {
            var   arg = args[currentIndex];
            Int32 result;

            errorMessage     = null;
            optionValueTyped = null;
            if (!String.IsNullOrEmpty(arg) && this.IsOption(args, currentIndex, arg))
            {
                result = this.ParseOption(args, currentIndex, arg, out optionName, out optionValueStr);
                if (result > 0)
                {
                    var on = optionName;
                    if (String.Equals(optionModel.PrimaryName, optionName, StringComparison.OrdinalIgnoreCase) || optionModel.Aliases.Any(alias => String.Equals(alias, on, StringComparison.OrdinalIgnoreCase)))
                    {
                        optionModel.TryParseToTyped(optionValueStr, ref optionValueTyped, ref errorMessage);
                    }
                    else
                    {
                        result = 0;
                    }
                }
            }
            else
            {
                result         = 0;
                optionName     = null;
                optionValueStr = null;
            }
            return(result);
        }
Exemple #2
0
 public ApplicationOptionParameter(ApplicationParameterModel pModel, OptionModel model, String optionName, String optionValue, Object optionValueTyped)
     : base(pModel)
 {
     this._model            = model;
     this._optionName       = optionName ?? "";
     this._optionValue      = optionValue ?? "";
     this._optionValueTyped = optionValueTyped;
 }
Exemple #3
0
 public SimpleApplicationParametersModel(AbstractOptionParser parser, String valuesModelName, OptionModel helpOption, OptionModel optionAndValueSeparator, OptionModel[] options, Int32 minValues, params String[] optionsWithDuplicatesAllowed)
     : base(
         parser,
         new ApplicationParameterModel("Options", false, ApplicationParameterModel.MAX_UNLIMITED, options.Concat(new[] { helpOption }).ToArray()),
         optionAndValueSeparator == null ? null : new ApplicationParameterModel(optionAndValueSeparator.PrimaryName, false, 1, 1, optionAndValueSeparator),
         new ApplicationParameterModel(valuesModelName, true, Math.Max(1, minValues), ApplicationParameterModel.MAX_UNLIMITED))
 {
     this._optionsWithDuplicates = new ReadOnlyCollection <String>(optionsWithDuplicatesAllowed.FilterNulls());
     this._helpOption            = helpOption;
 }
Exemple #4
0
        public ListOptionModel(String primaryName, OptionModel elementModel, String[] delimiters, Int32 minOccurs, Int32 maxOccurs, params String[] aliases)
            : base(typeof(String), primaryName, aliases)
        {
            if (elementModel == null)
            {
                throw new ArgumentNullException("Element model");
            }
            this._listCtor      = typeof(List <>).MakeGenericType(elementModel.OptionValueType).GetConstructor(new Type[0]);
            this._listAddMethod = typeof(List <>).MakeGenericType(elementModel.OptionValueType).GetMethod("Add", new[] { elementModel.OptionValueType });
            var delims = delimiters.FilterNulls();

            if (delims.Count == 0)
            {
                delims.Add(",");
            }
            this._delimiters   = delims.ToArray();
            this._elementModel = elementModel;
            this._minOccurs    = Math.Max(0, minOccurs);
            this._maxOccurs    = Math.Max(-1, maxOccurs);
        }
Exemple #5
0
 public SimpleApplicationParametersModel(AbstractOptionParser parser, String valuesModelName, OptionModel helpOption, OptionModel optionAndValueSeparator, OptionModel[] options, params String[] optionsWithDuplicatesAllowed)
     : this(parser, valuesModelName, helpOption, optionAndValueSeparator, options, 1, optionsWithDuplicatesAllowed)
 {
 }
Exemple #6
0
 public SimpleApplicationParametersModel(String valuesModelName, OptionModel helpOption, params OptionModel[] options)
     : this(null, valuesModelName, helpOption, null, options, null)
 {
 }
Exemple #7
0
 public SimpleApplicationParametersModel(String valuesModelName, OptionModel helpOption, OptionModel[] options, params String[] optionsWithDuplicatesAllowed)
     : this(null, valuesModelName, helpOption, null, options, optionsWithDuplicatesAllowed)
 {
 }
Exemple #8
0
 public SimpleApplicationParametersModel(String valuesModelName, OptionModel helpOption, OptionModel optionAndValueSeparator, OptionModel[] options, Int32 minValues, params String[] optionsWithDuplicatesAllowed)
     : this(null, valuesModelName, helpOption, optionAndValueSeparator, options, minValues, optionsWithDuplicatesAllowed)
 {
 }
Exemple #9
0
 public ListOptionModel(String primaryName, OptionModel elementModel, String[] delimiters, Int32 maxOccurs, params String[] aliases)
     : this(primaryName, elementModel, delimiters, 0, maxOccurs, aliases)
 {
 }
Exemple #10
0
 public ListOptionModel(String primaryName, OptionModel elementModel, String delimiter, Int32 minOccurs, Int32 maxOccurs, params String[] aliases)
     : this(primaryName, elementModel, new[] { delimiter }, minOccurs, maxOccurs, aliases)
 {
 }