summaryrefslogtreecommitdiffstats
path: root/src/Util.cpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2015-10-12 15:45:36 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2015-10-12 15:45:50 +0200
commit2edcec94e9e3f55313d4aa6d784e52ce37f1ba0e (patch)
treee24a11c2c6d4984de4ca6420beda9148a97ec1d6 /src/Util.cpp
parent66a0030f5d120a477128ea183451f7a7f9c33bb7 (diff)
downloadmanager-2edcec94e9e3f55313d4aa6d784e52ce37f1ba0e.tar.gz
manager-2edcec94e9e3f55313d4aa6d784e52ce37f1ba0e.zip
Add escaping in ConfigBase
Diffstat (limited to 'src/Util.cpp')
-rw-r--r--src/Util.cpp68
1 files changed, 66 insertions, 2 deletions
diff --git a/src/Util.cpp b/src/Util.cpp
index 78dd8d2..8b5bc67 100644
--- a/src/Util.cpp
+++ b/src/Util.cpp
@@ -15,8 +15,72 @@ namespace Util {
return string;
}
- QString& trimQuotes(const QString& string, bool& trimmed)
+ QString unescape(const QString &string, const QChar escapeChar)
{
- return trimQuotes(QString(string), trimmed);
+ if(string.isEmpty()) return string;
+ QString ret;
+ bool escaped = false;
+ QChar c = string.at(0);
+ for(int i = 0; i < string.length(); ++i)
+ {
+ c = string.at(i);
+ if(!escaped)
+ {
+ if(c == escapeChar)
+ {
+ escaped = true;
+ continue;
+ }
+ else
+ {
+ ret.append(c);
+ }
+ }
+ else
+ {
+ if(unescapeChars.contains(c))
+ {
+ ret.append(unescapeChars.value(c));
+ }
+ else
+ {
+ ret.append(c);
+ }
+ escaped = false;
+ }
+ }
+ if(escaped)
+ {
+ ret.append(escapeChar);
+ }
+ return ret;
}
+
+ QString escape(const QString &string, const QChar escapeChar, const QString &escapeChars)
+ {
+ QString ret;
+
+ for(int i = 0; i < string.length(); ++i)
+ {
+ QChar c = string.at(i);
+
+ if(escapeChars.contains(c))
+ {
+ ret.append(escapeChar);
+ ret.append(c);
+ }
+ else if(unescapeChars.values().contains(c))
+ {
+ ret.append(unescapeChars.key(c));
+ }
+ else
+ {
+ ret.append(c);
+ }
+ }
+
+ return ret;
+ }
+
+
}