Mono.GetOptions.OptionDetails.LinkAlternatesInsideList C# (CSharp) Метод

LinkAlternatesInsideList() публичный статический Метод

public static LinkAlternatesInsideList ( ArrayList list ) : void
list System.Collections.ArrayList
Результат void
		public static void LinkAlternatesInsideList(ArrayList list)
		{
			Hashtable baseForms = new Hashtable(list.Count);
			foreach(OptionDetails option in list)
			{
				if (option.LongForm != null && option.LongForm.Trim().Length > 0)
				{
					string[] parts = option.LongForm.Split(':');
					if (parts.Length < 2)
					{
						baseForms.Add(option.LongForm, option);
					}
					else
					{
						OptionDetails baseForm = (OptionDetails) baseForms[parts[0]];
						if (baseForm != null)
						{
							// simple linked list
							option.NextAlternate = baseForm.NextAlternate;
							baseForm.NextAlternate = option;
						}
					}
				}
			}
		}

Usage Example

Пример #1
0
        public string[] ProcessArgs(string[] args)
        {
            string arg;
            string nextArg;
            bool   OptionWasProcessed;

            list.Sort();

            OptionDetails.LinkAlternatesInsideList(list);

            args = NormalizeArgs(args);

            try {
                int argc = args.Length;
                for (int i = 0; i < argc; i++)
                {
                    arg = args[i];
                    if (i + 1 < argc)
                    {
                        nextArg = args[i + 1];
                    }
                    else
                    {
                        nextArg = null;
                    }

                    OptionWasProcessed = false;

                    if (arg.Length > 1 && (arg.StartsWith("-") || arg.StartsWith("/")))
                    {
                        foreach (OptionDetails option in list)
                        {
                            OptionProcessingResult result = option.ProcessArgument(arg, nextArg);
                            if (result != OptionProcessingResult.NotThisOption)
                            {
                                OptionWasProcessed = true;
                                if (result == OptionProcessingResult.OptionConsumedParameter)
                                {
                                    i++;
                                }
                                break;
                            }
                        }
                    }

                    if (!OptionWasProcessed)
                    {
                        ProcessNonOption(arg);
                    }
                }

                foreach (OptionDetails option in list)
                {
                    option.TransferValues();
                }

                foreach (string argument in argumentsTail)
                {
                    ProcessNonOption(argument);
                }

                return((string[])arguments.ToArray(typeof(string)));
            } catch (Exception ex) {
                System.Console.WriteLine(ex.ToString());
                //System.Environment.Exit(1);
                throw;
            }
        }