diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2015-10-12 15:45:36 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2015-10-12 15:45:50 +0200 |
| commit | 2edcec94e9e3f55313d4aa6d784e52ce37f1ba0e (patch) | |
| tree | e24a11c2c6d4984de4ca6420beda9148a97ec1d6 /src/Util.cpp | |
| parent | 66a0030f5d120a477128ea183451f7a7f9c33bb7 (diff) | |
| download | manager-2edcec94e9e3f55313d4aa6d784e52ce37f1ba0e.tar.gz manager-2edcec94e9e3f55313d4aa6d784e52ce37f1ba0e.zip | |
Add escaping in ConfigBase
Diffstat (limited to 'src/Util.cpp')
| -rw-r--r-- | src/Util.cpp | 68 |
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; + } + + } |
