summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/CRSMConfig.hpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/CRSMConfig.hpp b/src/CRSMConfig.hpp
index c8750dd..b25b809 100644
--- a/src/CRSMConfig.hpp
+++ b/src/CRSMConfig.hpp
@@ -60,13 +60,38 @@ using Boolean = bool;
template<>
class CRSMConfigValue<String> : public CRSMConfigValueBase {
String& config;
+ bool trimmedQuotes = false;
public:
CRSMConfigValue(String& config) : config(config) { }
- virtual void setValue(const QString& value) { config = value; }
- virtual QString value() { return config; }
+ virtual void setValue(const QString& value) { config = trimQuotes(QString(value), trimmedQuotes); }
+ virtual QString value()
+ {
+ if(trimmedQuotes)
+ {
+ return "\"" + config + "\"";
+ }
+ else
+ {
+ return config;
+ }
+ }
virtual CRSMConfigValueType::Type type() { return CRSMConfigValueType::Type::String; }
+
+private:
+ QString& trimQuotes(QString&& string, bool& trimmed)
+ {
+ trimmed = false;
+ if(string.length() >= 2 && string.at(0) == '"' && string.at(string.length() - 1) == '"')
+ {
+ string.remove(0, 1);
+ string.remove(string.length() - 1, 1);
+ trimmed = true;
+ }
+ return string;
+ }
+
};
template<typename Type>