Browse Source

some error handling for config yaml parsing

pull/3/head
Thomas Knoll 1 year ago
parent
commit
13f7910dd7
  1. 19
      util/ConfigYaml.cpp

19
util/ConfigYaml.cpp

@ -104,7 +104,7 @@ YAML::Node YAML::convert<Label>::encode(const Label& rhs) {
} }
bool YAML::convert<Label>::decode(const YAML::Node& node, Label& rhs) { bool YAML::convert<Label>::decode(const YAML::Node& node, Label& rhs) {
if (!node.Type() == NodeType::Map) {
if (!node.Type() == NodeType::Map || !node["label"] || !node["text"]) {
return false; return false;
} }
rhs.label_ = node["label"].as<std::string>(); rhs.label_ = node["label"].as<std::string>();
@ -128,7 +128,7 @@ YAML::Node YAML::convert<Formula>::encode(const Formula& rhs) {
} }
bool YAML::convert<Formula>::decode(const YAML::Node& node, Formula& rhs) { bool YAML::convert<Formula>::decode(const YAML::Node& node, Formula& rhs) {
if (!node.Type() == NodeType::Map) {
if (!node.IsDefined() || !node.Type() == NodeType::Map || !node["formula"] || !node["content"]) {
return false; return false;
} }
@ -150,10 +150,19 @@ const std::string Configuration::overwrite_identifier_{"; // Overwritten through
try { try {
YAML::Node config = YAML::LoadFile(file_); YAML::Node config = YAML::LoadFile(file_);
std::vector<Label> labels;
std::vector<Formula> formulas;
std::vector<Module> modules;
const std::vector<Label> labels = config["labels"].as<std::vector<Label>>();
const std::vector<Formula> formulas = config["formulas"].as<std::vector<Formula>>();
const std::vector<Module> modules = config["modules"].as<std::vector<Module>>();
if (config["labels"]) {
labels = config["labels"].as<std::vector<Label>>();
}
if (config["formulas"]) {
formulas = config["formulas"].as<std::vector<Formula>>();
}
if (config["modules"]) {
modules = config["modules"].as<std::vector<Module>>();
}
for (auto& label : labels) { for (auto& label : labels) {
configuration.push_back({label.createExpression(), label.label_ , ConfigType::Label, label.overwrite_}); configuration.push_back({label.createExpression(), label.label_ , ConfigType::Label, label.overwrite_});

Loading…
Cancel
Save