string GetOptionUsage(ArgOption option) { StringBuilder usage = new StringBuilder(); bool first = true; foreach (string key in option.Keys.Keys) { if (!first) { usage.Append(" | "); } first = false; usage.Append(OptionChar); usage.Append(key); if (option.IsParameter) { usage.Append("=<value>"); } } if (!string.IsNullOrEmpty(option.Help)) { usage.Append(" - " + option.Help); } return(usage.ToString()); }
ArgOption FindOption(string arg, out string v, ref Dictionary <object, bool> usedOptions) { int i = arg.IndexOfAny(new char[] { '=', ':' }); v = i < 0 ? null : arg.SafeSubstring(i + 1); string keyName = i < 0 ? arg : arg.SafeRemove(i); ArgOption op = null; foreach (ArgOption option in this.options) { if (option.Keys.ContainsKey(keyName)) { op = option; break; } } if (op == null) { return(null); } if (!op.AllowMultiple && usedOptions.ContainsKey(op)) { return(null); } if (!usedOptions.ContainsKey(op)) { usedOptions.Add(op, true); } return(op); }
bool ParseKeyCore(string arg, ref bool onlyTargets, ref int targetIndex, ref Dictionary <object, bool> usedOptions) { string v; ArgOption option = FindOption(arg.Substring(1), out v, ref usedOptions); if (option == null) { return(false); } if (!option.IsParameter && v != null) { return(false); } if (option.IsParameter && v == null) { return(false); } option.DoAction(v); return(true); }
string GetOptionString(ArgOption option) { return(OptionChar.ToString() + option.Keys.Keys.First()); }
bool ParseKeyValue(string arg, ref bool onlyTargets, ref ArgOption nextKey, ref int targetIndex, ref Dictionary <object, bool> usedOptions) { nextKey.DoAction(arg); nextKey = null; return(true); }