private IEnumerable <GameInfo> CollectGames() { ExtractParserStatus status = ExtractParserStatus.LookingForCardDrops; string line; int cardDropsRemaining = 0; while ((line = Console.ReadLine()) != null) { if (status == ExtractParserStatus.LookingForCardDrops) { Regex dropsRemaining = new Regex("([0-9]+) card drops? remaining"); if (dropsRemaining.IsMatch(line)) { cardDropsRemaining = int.Parse(dropsRemaining.Match(line).Groups[1].Value); status = ExtractParserStatus.LookingForGameName; continue; } } if (status == ExtractParserStatus.LookingForGameName) { status = ExtractParserStatus.LookingForCardDrops; yield return(new GameInfo() { Name = line.Trim(), CardsRemaining = cardDropsRemaining }); } } }
internal IEnumerable <GameInfo> CollectGames(IEnumerable <string> lines) { ExtractParserStatus status = ExtractParserStatus.LookingForCardDrops; int cardDropsRemaining = 0; foreach (var line in lines) { if (status == ExtractParserStatus.LookingForCardDrops) { Regex dropsRemaining = new Regex("([0-9]+) card drops? remaining"); if (dropsRemaining.IsMatch(line)) { cardDropsRemaining = int.Parse(dropsRemaining.Match(line).Groups[1].Value); status = ExtractParserStatus.LookingForGameName; continue; } } if (status == ExtractParserStatus.LookingForGameName) { status = ExtractParserStatus.LookingForCardDrops; yield return(new GameInfo() { Name = line.Trim(), CardsRemaining = cardDropsRemaining }); } } }