#include "functions.hpp" #include "restaurants.hpp" #include "../network/network.hpp" #include "../htmlparser.hpp" void LunchRest::UKarlaRestaurant::parse() { int menu_index = 0; Request r; auto html = r.get(_url); if(html == "") return; clearMenus(); try { HtmlParser hparse(html); auto &root = hparse.getRoot(); auto days = root.find("//li[@class='item-day']"); int validdays = 0; for(auto &day : days) { validdays++; auto meals = day->find("./div[@class='row']"); for(auto &meal : meals) { auto soup = false; auto texts = meal->find("./div/text()"); if(texts.empty()) { menus[menu_index].addMeal(false, parseError, parseInfo, 0); continue; } std::string name = trim(nodeToText(texts[0])); if(name[0] == 'P') { soup = true; name = name.substr(10); } else { name = name.substr(3); } int price = -1; if(texts.size() > 1) price = std::stoi(trim(nodeToText(texts[1]))); menus[menu_index].addMeal(soup, name, "", price); menus[menu_index].setInvalidMenu(false); } menu_index++; } } catch (std::exception &/*UNUSED*/) { clearMenus(); for(int i = 0; i < menus.size(); i++) { menus[i].addMeal(false, parseError, parseInfo, 0); } } }