private void InitializeMaps(List <OptionBase <TRunInfo> > options) { foreach (OptionBase <TRunInfo> option in options) { addProcessInfo(option); if (option.Type == typeof(bool)) { addToBoolMaps(option); } } // local functions void addProcessInfo(OptionBase <TRunInfo> option) { var(fullKey, shortKey) = OptionTokenizer.TokenizeKeyConfiguration(option.Key); OptionProcessInfo <TRunInfo> processInfo = option.GetProcessInfo(); _fullOptionInfo.Add(fullKey, processInfo); if (shortKey != null) { _shortOptionInfo.Add(shortKey.Value, processInfo); } } void addToBoolMaps(OptionBase <TRunInfo> option) { var(fullKey, shortKey) = OptionTokenizer.TokenizeKeyConfiguration(option.Key); _fullBoolTypeKeys.Add(fullKey); if (shortKey != null) { _shortBoolTypeKeys.Add(shortKey.Value); } } }
private ProcessStageResult ProcessShort(char key, string valueString, ProcessContext <TRunInfo> context) { OptionProcessInfo <TRunInfo> processInfo = context.Options.GetOptionProcessInfo(key); object value = GetParsedValue(processInfo.Type, valueString, context, processInfo.OnParseErrorUseMessage); if (processInfo.OnParsed != null) { dynamic convertedType = Convert.ChangeType(value, processInfo.Type); dynamic onProcess = processInfo.OnParsed; ProcessStageResult onProcessResult = onProcess.Invoke(convertedType); if (onProcessResult == ProcessResult.End) { return(ProcessResult.End); } } processInfo.Setter(context.RunInfo, value); return(ProcessResult.Continue); }