public static List <ShowdownTeamSet> GetTeams(string paste) { string[] lines = paste.Split(new[] { "\n" }, StringSplitOptions.None); var result = new List <ShowdownTeamSet>(); for (int i = 0; i < lines.Length; i++) { var line = lines[i].Trim(); if (string.IsNullOrWhiteSpace(line)) { continue; } if (!IsLineShowdownTeam(line)) { continue; } var split = line.Split(new[] { "===" }, 0); if (split.Length != 3) { continue; } var split2 = split[1].Trim().Split(']'); if (split2.Length != 2) { continue; } var format = split2[0].Substring(1); var name = split2[1].TrimStart(); // find end int end = i + 1; while (end < lines.Length) { if (IsLineShowdownTeam(lines[end])) { break; } end++; } var teamlines = lines.Skip(i + 1).Take(end - i - 1); var sets = ShowdownParsing.GetShowdownSets(teamlines).ToList(); if (sets.Count == 0) { continue; } result.Add(new ShowdownTeamSet(name, sets, format)); i = end - 1; } return(result); }
/// <summary> /// A method to get a list of ShowdownSet(s) from a string paste /// Needs to be extended to hold several teams /// </summary> /// <param name="paste"></param> public static List <ShowdownSet> ShowdownSets(string paste) { paste = paste.Trim(); // Remove White Spaces if (IsTeamBackup(paste)) { return(ShowdownTeamSet.GetTeams(paste).SelectMany(z => z.Team).ToList()); } var lines = paste.Split(new[] { "\n" }, StringSplitOptions.None); return(ShowdownParsing.GetShowdownSets(lines).ToList()); }
public void SimulatorParseMultiple() { var text = string.Join("\r\n\r\n", Sets); var lines = text.Split(new[] { "\r\n", "\n" }, StringSplitOptions.None); var sets = ShowdownParsing.GetShowdownSets(lines); Assert.True(sets.Count() == Sets.Length); sets = ShowdownParsing.GetShowdownSets(Enumerable.Empty <string>()); Assert.True(!sets.Any()); sets = ShowdownParsing.GetShowdownSets(new [] { "", " ", " " }); Assert.True(!sets.Any()); }