public interface IGameType
public string Name { get; set; }
public LimitType LimitType { get; set; }
public static LimitType ParseLimitType(string input){
case string a when a.Contains("No"): return LimitType.No;
case string a when a.Contains("Pot"): return LimitType.Pot;
case string a when a.Contains("Limit"): return LimitType.Limit;
default: throw new Exception("Unable to parse Limit Type");
public class Omaha : IGameType
public string Name { get; set; }
public LimitType LimitType { get; set; }
public char Currency { get; set; }
public float SmallBlind { get; set; }
public float BigBlind { get; set; }
public static Omaha Parse(string input)
Omaha omaha = new Omaha();
omaha.LimitType = ParseLimitType(input);
Regex stakeRegex = new Regex(@"\((.*?)\)");
string stake = stakeRegex.Match(input).Groups[1].Value;
omaha.Currency = stake[0];
omaha.SmallBlind = float.Parse(stake.Split("/")[0].Substring(1));
omaha.BigBlind = float.Parse(stake.Split("/")[1].Substring(1));