using Nonemm.Core; namespace Nonemm.Contests; /// N1MM names a contest per mode: CQ WW is `CQWWCW`, `CQWWSSB` or `CQWWRTTY`, /// never plain `CQWW`. Our registry is keyed by the family, so a log written by /// N1MM has to have its contest name turned back into a family and a mode /// before the rules can be built. public static class N1mmContestNames { private static readonly Dictionary Known = new(StringComparer.OrdinalIgnoreCase) { ["CQWWCW"] = ("CQWW", ModeCategory.Cw), ["CQWWSSB"] = ("CQWW", ModeCategory.Phone), ["CQWWRTTY"] = ("CQWW", ModeCategory.Digital), ["CQWPXCW"] = ("CQWPX", ModeCategory.Cw), ["CQWPXSSB"] = ("CQWPX", ModeCategory.Phone), ["CQWPXRTTY"] = ("CQWPX", ModeCategory.Digital), ["WAECW"] = ("WAE", ModeCategory.Cw), ["WAESSB"] = ("WAE", ModeCategory.Phone), ["WAERTTY"] = ("WAE", ModeCategory.Digital), ["ARRLDXCW"] = ("ARRLDX", ModeCategory.Cw), ["ARRLDXSSB"] = ("ARRLDX", ModeCategory.Phone), ["SSCW"] = ("SS", ModeCategory.Cw), ["SSSSB"] = ("SS", ModeCategory.Phone), ["NAQPCW"] = ("NAQP", ModeCategory.Cw), ["NAQPSSB"] = ("NAQP", ModeCategory.Phone), ["NAQPRTTY"] = ("NAQP", ModeCategory.Digital), ["CQ160CW"] = ("CQ160", ModeCategory.Cw), ["CQ160SSB"] = ("CQ160", ModeCategory.Phone), ["EU_DXC"] = ("EUDXC", ModeCategory.Cw), ["REFCW"] = ("REF", ModeCategory.Cw), ["REFSSB"] = ("REF", ModeCategory.Phone), ["OCEANIACW"] = ("OCEANIA", ModeCategory.Cw), ["OCEANIASSB"] = ("OCEANIA", ModeCategory.Phone), ["BARTGSRTTY"] = ("BARTGRTTYS", ModeCategory.Digital), ["ALLASIACW"] = ("ALLASIA", ModeCategory.Cw), ["ALLASIASSB"] = ("ALLASIA", ModeCategory.Phone), }; public static bool TryResolve(string name, out string family, out ModeCategory mode) { if (Known.TryGetValue(name.Trim(), out (string Family, ModeCategory Mode) found)) { (family, mode) = found; return true; } family = ""; mode = ModeCategory.Cw; return false; } }