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]); } } }
public ICommand(CommonData data, CommandDataPattern pattern) { this.pattern = pattern; this.data = data; }