#include "parsers.hpp" #include "../network/network.hpp" #include "../htmlparser.hpp" void LunchRest::UKarlaParser::parse() { menus.clear(); Request r; auto html = r.get(_url); HtmlParser hparse(html); auto &root = hparse.getRoot(); auto days = root.find("//li[@class='item-day']"); int validdays = 0; for(auto &day : days) { validdays++; Menu m{}; auto meals = day->find("./div[@class='row']"); for(auto &meal : meals) { auto soup = false; auto texts = meal->find("./div/text()"); std::string name = dynamic_cast(texts[0])->get_content(); if(name[0] == 'P') { soup = true; name = name.substr(10); } int price = -1; if(texts.size() > 1) price = std::stoi(dynamic_cast(texts[1])->get_content()); m.addMeal(soup, name, "", price); } menus.push_back(m); } for(int i = validdays; i < 5; i++) { menus.push_back(Menu{}); menus.back().setInvalidMenu(); } }