예제 #1
0
        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;
        }
예제 #2
0
        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;
        }