public static string CreateCsv(HotDinnerData hotDinnerData) { var message = string.Format("{0},{1},{2},{3},{4},{5},{6}", CsvUtility.Escape(hotDinnerData.RestaurantName), CsvUtility.Escape(hotDinnerData.IsOpen ? "Open" : "Soon"), CsvUtility.Escape(hotDinnerData.When), CsvUtility.Escape(hotDinnerData.Where), CsvUtility.Escape(hotDinnerData.ShortDescription), CsvUtility.Escape(hotDinnerData.Description), CsvUtility.Escape(hotDinnerData.Url)); return message; }
public static HotDinnerData Parse(HtmlNode htmlNode, bool isOpen) { var hotDinnerData = new HotDinnerData(); hotDinnerData.IsOpen = isOpen; var restaurantNode = htmlNode.SelectSingleNode(".//span[@class='articleheading']"); if (restaurantNode != null) hotDinnerData.RestaurantName = restaurantNode.InnerText; var detailsText = string.Empty; if (isOpen) { var detailsNode = htmlNode.SelectSingleNode(".//p[2]"); if (detailsNode != null) detailsText = detailsNode.InnerText; } else detailsText = htmlNode.InnerText; var nutshellIndex = detailsText.IndexOf(NUTSHELL) + NUTSHELL.Length; var whereIndex = detailsText.IndexOf(WHERE); var whyIndex = detailsText.IndexOf(WHY); var whyLength = WHY.Length; if (whyIndex == -1) { whyIndex = detailsText.IndexOf(WHY_ALT); whyLength = WHY_ALT.Length; } var whenIndex = detailsText.IndexOf(WHEN); hotDinnerData.ShortDescription = detailsText.Substring(nutshellIndex, whereIndex - nutshellIndex).Trim(); hotDinnerData.Where = detailsText.Substring(whereIndex + WHERE.Length, whyIndex - (whereIndex + WHERE.Length)).Trim(); if (whenIndex == -1) hotDinnerData.Description = detailsText.Substring(whyIndex + whyLength).Trim(); else { hotDinnerData.Description = detailsText.Substring(whyIndex + whyLength, whenIndex - (whyIndex + whyLength)).Trim(); hotDinnerData.When = detailsText.Substring(whenIndex + WHEN.Length).Trim(); } var linkNode = htmlNode.SelectSingleNode(".//a"); if (linkNode != null) hotDinnerData.Url = linkNode.GetAttributeValue("href", ""); return hotDinnerData; }