Пример #1
0
        private string[] ExtractSwitches(ICommandHandler handler, IEnumerable <string> args)
        {
            if (!handler.ProcessSwitches)
            {
                return(args.ToArray());
            }

            var result = new List <string>();

            var skipArgs       = 0;
            var lastSwitchName = default(string);

            foreach (var item in args)
            {
                if (skipArgs > 0)
                {
                    handler.AppendSwitch(lastSwitchName, item);
                    skipArgs--;
                    continue;
                }

                //Handle help switch.
                if (item.StartsWith("-?"))
                {
                    handler.SetSwitch("?");
                    return(new string[] { });
                }


                if (item.StartsWith("--"))
                {
                    lastSwitchName = item.Substring(2).ToLower();
                    handler.SetSwitch(lastSwitchName);

                    var currentSwitch = handler.Switches.First(s => s.Names.Contains(lastSwitchName));
                    skipArgs = currentSwitch.ArgumentCount;
                }
                else if (item.StartsWith("-"))
                {
                    lastSwitchName = item.Substring(1);
                    handler.SetSwitch(lastSwitchName);

                    var currentSwitch = handler.Switches.First(s => s.ShortNames.Contains(lastSwitchName));
                    skipArgs = currentSwitch.ArgumentCount;
                }
                else
                {
                    result.Add(item);
                }
            }

            return(result.ToArray());
        }