+bool Settings::checkNameValid(const std::string &name)
+{
+ bool valid = name.find_first_of("=\"{}#") == std::string::npos;
+ if (valid) valid = trim(name) == name;
+ if (!valid) {
+ errorstream << "Invalid setting name \"" << name << "\""
+ << std::endl;
+ return false;
+ }
+ return true;
+}
+
+
+bool Settings::checkValueValid(const std::string &value)
+{
+ if (value.substr(0, 3) == "\"\"\"" ||
+ value.find("\n\"\"\"") != std::string::npos) {
+ errorstream << "Invalid character sequence '\"\"\"' found in"
+ " setting value!" << std::endl;
+ return false;
+ }
+ return true;
+}
+
+
+std::string Settings::sanitizeName(const std::string &name)
+{
+ std::string n = trim(name);
+
+ for (const char *s = "=\"{}#"; *s; s++)
+ n.erase(std::remove(n.begin(), n.end(), *s), n.end());
+
+ return n;
+}
+
+
+std::string Settings::sanitizeValue(const std::string &value)
+{
+ std::string v(value);
+ size_t p = 0;
+
+ if (v.substr(0, 3) == "\"\"\"")
+ v.erase(0, 3);
+
+ while ((p = v.find("\n\"\"\"")) != std::string::npos)
+ v.erase(p, 4);
+
+ return v;
+}
+
+