diff --git a/src/blackmisc/stringutils.cpp b/src/blackmisc/stringutils.cpp index fe16f50cf..173a23d44 100644 --- a/src/blackmisc/stringutils.cpp +++ b/src/blackmisc/stringutils.cpp @@ -151,7 +151,7 @@ namespace BlackMisc for (int i = 0; i < bytes.size(); i++) { const int b = static_cast(bytes.at(i)); - h.append(intToHex(b, 2)); + h += intToHex(b, 2); } return h; } @@ -398,6 +398,24 @@ namespace BlackMisc if (set.isEmpty()) { return QStringLiteral(""); } return set.toList().join(separator); } + + QMap parseIniValues(const QString &data) + { + QMap map; + QList lines = splitLinesRefs(data); + for (const QStringRef &l : lines) + { + if (l.isEmpty()) { continue; } + const int i = l.indexOf("="); + if (i < 0 || i >= l.length() + 1) { continue; } + + const QString key = l.left(i).trimmed().toString(); + const QString value = l.mid(i + 1).toString(); + if (value.isEmpty()) { continue; } + map.insert(key, value); + } + return map; + } } // ns //! \endcond diff --git a/src/blackmisc/stringutils.h b/src/blackmisc/stringutils.h index 631eb62c5..6f1526452 100644 --- a/src/blackmisc/stringutils.h +++ b/src/blackmisc/stringutils.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -115,6 +116,9 @@ namespace BlackMisc return s.trimmed(); } + //! Obtain ini file like values, e.g. foo=bar + BLACKMISC_EXPORT QMap parseIniValues(const QString &data); + //! Is 0-9 char, isDigit allows a bunch of more characters inline bool is09(const QChar &c) { return c >= u'0' && c <= u'9'; }