/// <summary> /// Parses options that the chess engine supports. They will be added to the Options property. /// </summary> /// <param name="data"></param> private void ParseOption(string data) { var containsDefaultOption = data.Contains("default"); var containsMaxOption = data.Contains("max"); var pattern = @"name (?<name>.*) type (?<type>.*)"; // Start off with the simplest pattern. // // If the data contains max then all options are included. if (containsMaxOption) { pattern = @"name (?<name>.*) type (?<type>.*) default (?<default>.*) min (?<min>.*) max (?<max>.*)"; } else if (containsDefaultOption) { pattern = @"name (?<name>.*) type (?<type>.*) default (?<default>.*)"; } var options = Regex.Match(data, pattern); if (options.Groups != null) { var optionData = new OptionData(); if (options.Groups["name"].Success) { optionData.Name = options.Groups["name"].Value; } if (options.Groups["type"].Success) { optionData.OptionType = options.Groups["type"].Value; } if (options.Groups["default"].Success) { optionData.Default = options.Groups["default"].Value; } if (options.Groups["min"].Success) { optionData.Min = options.Groups["min"].Value; } if (options.Groups["max"].Success) { optionData.Max = options.Groups["max"].Value; } Options.Add(string.Format("{0}{1}", OPTION, Regex.Replace(optionData.Name, @"\s+", string.Empty)), optionData); } }
/// <summary> /// Adds the Id option's name component. /// </summary> /// <param name="data"></param> private void ParseIdName(string data) { var name = new Regex("id name "); if (name.IsMatch(data)) { var value = name.Split(data); if (value.Length > 1) { var optionData = new OptionData(); optionData.Name = ID; optionData.Id = new IdData { Name = value[1] }; Options.Add(ID, optionData); } } }