public static IParser Create(string fileName, ParseType parseType) { switch (parseType) { case ParseType.Achievements: return(new AchievementParser(fileName)); case ParseType.Pets: return(new PetParser(fileName)); case ParseType.Mounts: return(new MountParser(fileName)); case ParseType.BattlePets: return(new BattlePetParser(fileName)); } throw new ApplicationException("No parser defined for type " + parseType.ToString()); }
public static IWowHeadParser Create(string javascriptConsoleOutput, ParseType parseType) { // parse out the ids from the javascript console output // Example // javascriptConsoleOutput = "9670 VM284:2\r\n" + // "9671 VM284:2\n" + // "9672 VM284:2\n" + // "9673 VM284:2\n" + // "9674 VM284:2\n" + // "9678 VM284:2\n" + // "9680 VM284:2\n" + // "738 VM284:2\n" + // "undefined"; var idHash = new Dictionary <string, string>(); var lines = javascriptConsoleOutput.Split('\n'); foreach (var line in lines) { // last line, ignore it if (line == "undefined") { continue; } // first try to split on ; // var lineParts = line.Split(';'); var id = string.Empty; var lineParts = line.Split(' '); if (lineParts.Length == 1) { id = lineParts[0]; } else { id = lineParts[1]; } if (!idHash.ContainsKey(id)) { idHash.Add(id, id); } } var ids = new List <string>(idHash.Values); switch (parseType) { case ParseType.Achievements: return(new WowHeadAchievementParser(ids)); case ParseType.Pets: return(new WowHeadPetParser(ids)); case ParseType.Mounts: return(new WowHeadMountParser(ids)); case ParseType.BattlePets: return(new WowHeadBattlePetParser(ids)); } throw new ApplicationException("No wow head parser defined for type " + parseType.ToString()); }