lunch-rest/meal.hpp

63 lines
1.6 KiB
C++

#ifndef LUNCH_REST_MEAL_H
#define LUNCH_REST_MEAL_H
#include <string>
#include <ostream>
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