public RBNArticle Parse(StreamReader rbnStream) { RBNArticle article = new RBNArticle(); RBNHands currentHands = null; RBNAuction currentAuction = null; string line; while ((line = rbnStream.ReadLine()) != null) { RBNLine rbnLine = RBNLineMapper.GetRBNLine(line); if (rbnLine != null) { switch (rbnLine.GetRBNLineType()) { case RBNLineType.Hands: currentHands = (RBNHands)rbnLine; article.Add(rbnLine); break; case RBNLineType.Auction: currentAuction = (RBNAuction)rbnLine; if (currentHands != null) { currentHands.Vulnerability = currentAuction.Vulnerability; currentHands.Dealer = currentAuction.Auction.Dealer; } article.Add(rbnLine); break; case RBNLineType.BidExplanation: if (currentAuction != null) { currentAuction.Auction.Explanations .Add(((RBNBidExplanation)rbnLine).Explanation); } break; default: article.Add(rbnLine); break; } } } return(article); }
public void Add(RBNLine line) { if (line == null) { return; } RBNLineType type = line.GetRBNLineType(); switch (type) { case RBNLineType.TitleAndAuthor: RBNTitleAndAuthor ta = (RBNTitleAndAuthor)line; Author = ta.Author; Title = ta.Title; return; default: Lines.Add(line); break; } }