#ifndef LUNCH_REST_MEAL_H #define LUNCH_REST_MEAL_H #include #include namespace LunchRest { class Meal { public: Meal() = default; Meal(bool soup, const std::string &name, const std::string &desc, int price) : _isSoup(soup), _name(name), _desc(desc), _price(price) { replaceStr(_name, "\"", "\\\""); replaceStr(_desc, "\"", "\\\""); } bool isSoup() const { return _isSoup; } const std::string &getName() const { return _name; } const std::string &getDesc() const { return _desc; } int getPrice() const { return _price; } void setName(const std::string &name) { _name = name; replaceStr(_name, "\"", "\\\""); } void setPrice(int price) { _price = price; } void setSoup(bool soup = true) { _isSoup = soup; } void setDesc(const std::string &desc) { _desc = desc; replaceStr(_desc, "\"", "\\\""); } std::string jsonify() const; private: void replaceStr(std::string &str, const std::string &to_replace, const std::string &replacement) { auto pos = str.find(to_replace); while(pos != std::string::npos) { str.replace(pos, to_replace.length(), replacement); pos += replacement.length(); pos = str.find(to_replace, pos); } } bool _isSoup = false; std::string _name; std::string _desc; int _price; }; } // end of namespace LunchRest std::ostream &operator<<(std::ostream &os, const LunchRest::Meal &meal); #endif