Exemple #1
0
        public void SetPattern(CommandDataPattern pattern)
        {
            args.Clear();
            keys.Clear();

            for (int i = 0; i < mergeSplit.Count; i++)
            {
                if (isOption.IsMatch(mergeSplit[i]))
                {
                    int lenght = mergeSplit[i].Length;
                    for (int j = 1; j < lenght; j++)
                    {
                        char key = mergeSplit[i][j];
                        if (!pattern.options.ContainsKey(key))
                        {
                            throw new BadInputException(String.Format("key not found {0}", key));
                        }

                        bool hasValue = pattern.options[key];
                        if (hasValue)
                        {
                            if (lenght > 2)
                            {
                                throw new BadInputException(String.Format("inline keys with value {0}", mergeSplit[i]));
                            }
                            if (i == mergeSplit.Count - 1)
                            {
                                throw new BadInputException(String.Format("value not found for {0}", key));
                            }
                            keys.Add(key, i + 1);
                            i++;
                        }
                        else
                        {
                            keys.Add(key, -1);
                        }
                    }
                }
                else
                {
                    args.Add(mergeSplit[i]);
                }
            }
        }
Exemple #2
0
 public ICommand(CommonData data, CommandDataPattern pattern)
 {
     this.pattern = pattern;
     this.data    = data;
 }