Exemplo n.º 1
0
        private void ProcesOption(string value, int order, IEnumerable <Argument> arguments)
        {
            foreach (var argument in arguments)
            {
                if (argument.Initialize(order, value))
                {
                    return;
                }
            }

            throw SharpArgsException.UnbindableOption(order);
        }
Exemplo n.º 2
0
        private void ProcessParameter(char name, string value, IEnumerable <Argument> arguments)
        {
            foreach (var argument in arguments)
            {
                if (argument.Initialize(name, value))
                {
                    return;
                }
            }

            throw SharpArgsException.UnbindableParameter(name);
        }
Exemplo n.º 3
0
        public void ParseArgs(IReadOnlyList <string> args, List <Argument> arguments)
        {
            var positionalMode = false;
            var order          = 0;

            for (var i = 0; i < args.Count; i++)
            {
                if (args[i] == "--")
                {
                    positionalMode = true;
                }
                else if (!args[i].StartsWith("-") || positionalMode)
                {
                    ProcesOption(args[i], ++order, arguments);
                }
                else if (args[i].StartsWith("--"))
                {
                    ProcessParameter(args[i].Substring(2), GetValue(args, ref i), arguments);
                }
                else if (args[i].StartsWith("-") && args[i].Length == 2)
                {
                    ProcessParameter(args[i].ToLowerInvariant().Last(), GetValue(args, ref i), arguments);
                }
                else
                {
                    try
                    {
                        foreach (var flag in args[i].ToLowerInvariant().Skip(1))
                        {
                            ProcessParameter(flag, null, arguments.Where(x => x.Combinable));
                        }
                    }
                    catch (Exception exception)
                    {
                        throw SharpArgsException.UnbindableGroup(args[i], exception);
                    }
                }
            }
        }