private static WeekMenu CreateTestWeekMenu(DateOnly date) { var menu1 = new TodayMenu(date) { Breakfast = new Menu(MenuType.Breakfast) { Menus = new[] { "aaa", "bbb", "ccc", "dddd" }, SpecialMenus = new[] { "aaa", "bbb", "ccc", "dddd" } }, Lunch = new Menu(MenuType.Breakfast) { Menus = new[] { "aaa", "bbb", "ccc", "dddd" }, SpecialMenus = new[] { "aaa", "bbb", "ccc", "dddd" } }, Dinner = new Menu(MenuType.Breakfast) { Menus = new[] { "aaa", "bbb", "ccc", "dddd" }, SpecialMenus = new[] { "aaa", "bbb", "ccc", "dddd" } } }; var menu2 = menu1 with { Date = date.AddDays(1), Lunch = new Menu(MenuType.Breakfast) { Menus = new[] { "aaa", "bbb" } } }; return(new WeekMenu(new[] { menu1, menu2 })); } }
public static IReadOnlyCollection <TodayMenu> ParseAllDayMenu(HtmlDocument html) { try { var table = html.DocumentNode.SelectSingleNode(@"//table[@id='user-table']"); var dates = table.SelectNodes(@"./tr/th").Skip(1).GetEnumerator(); var menus = table.SelectNodes(@"./tbody/tr"); var breakfasts = menus[0].Elements("td").GetEnumerator(); var lunchs = menus[1].Elements("td").GetEnumerator(); var dinners = menus[2].Elements("td").GetEnumerator(); var weekMenu = new List <TodayMenu>(); while (dates.MoveNext()) { var breakfast = breakfasts.MoveNext(); var lunch = lunchs.MoveNext(); var dinner = dinners.MoveNext(); var date = ParseDateText(dates.Current.InnerText); var todayMenu = new TodayMenu(date) { Breakfast = breakfast ? ParseMenu(MenuType.Breakfast, breakfasts.Current) : new Menu(MenuType.Lunch), Lunch = lunch ? ParseMenu(MenuType.Lunch, lunchs.Current) : new Menu(MenuType.Lunch), Dinner = dinner ? ParseMenu(MenuType.Dinner, dinners.Current) : new Menu(MenuType.Dinner), }; weekMenu.Add(todayMenu); } return(weekMenu); } catch (Exception e) { throw new MenuParseException("Faild to parse menu html", e); } }