public List <UserModeInfo> ParseUserModeString(string modeString) { List <UserModeInfo> userModes = new List <UserModeInfo>(); try { bool set = true; char[] modeArr = modeString.ToCharArray(); for (int i = 1; i <= modeArr.GetUpperBound(0); i++) { UserModeInfo newMode = new UserModeInfo(); if (modeArr[i].Equals('-')) { set = false; } else if (modeArr[i].Equals('+')) { set = true; } else if (modeArr[i].Equals('*')) { newMode.Mode = UserMode.o; newMode.Set = set; userModes.Add(newMode); } else { UserMode foundMode; bool validMode = Enum.TryParse(modeArr[i].ToString(), false, out foundMode); if (validMode) { newMode.Mode = foundMode; newMode.Set = set; userModes.Add(newMode); } } } } catch (Exception ex) { ThrowException(ex, "Unable to parse User Mode."); } return(userModes); }
public static string ModeToString(this UserModeInfo mode) { return(string.Format("{0}{1}", (mode.Set) ? "+" : "-", mode.Mode.ToString())); }