summaryrefslogtreecommitdiffstats
path: root/src/linguist/shared/projectdescriptionreader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/linguist/shared/projectdescriptionreader.cpp')
-rw-r--r--src/linguist/shared/projectdescriptionreader.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/linguist/shared/projectdescriptionreader.cpp b/src/linguist/shared/projectdescriptionreader.cpp
index eded3a650..8badd6584 100644
--- a/src/linguist/shared/projectdescriptionreader.cpp
+++ b/src/linguist/shared/projectdescriptionreader.cpp
@@ -15,6 +15,7 @@
#include <functional>
using std::placeholders::_1;
+using namespace Qt::Literals::StringLiterals;
class Validator
{
@@ -131,7 +132,7 @@ private:
result.filePath = stringValue(obj, QLatin1String("projectFile"));
result.compileCommands = stringValue(obj, QLatin1String("compileCommands"));
result.codec = stringValue(obj, QLatin1String("codec"));
- result.excluded = stringListValue(obj, QLatin1String("excluded"));
+ result.excluded = wildcardsToRegExes(stringListValue(obj, QLatin1String("excluded")));
result.includePaths = stringListValue(obj, QLatin1String("includePaths"));
result.sources = stringListValue(obj, QLatin1String("sources"));
if (obj.contains(QLatin1String("translations")))
@@ -171,6 +172,27 @@ private:
return QStringLiteral("unknown");
}
+ static QVector<QRegularExpression> wildcardsToRegExes(const QStringList &wildcardPatterns)
+ {
+ QVector<QRegularExpression> result;
+ result.reserve(wildcardPatterns.size());
+ for (const QString &wildcardPattern : wildcardPatterns)
+ result.append(wildcardToRegEx(wildcardPattern));
+ return result;
+ }
+
+ // Return a QRegularExpression object for a TR_EXCLUDE / QT_EXCLUDE_SOURCES_FROM_TRANSLATION
+ // wildcard pattern. The regular expression is only anchored at the beginning to allow matching
+ // subdirectories.
+ static QRegularExpression wildcardToRegEx(const QString &wildcardPattern)
+ {
+ return QRegularExpression(
+ "\\A"_L1
+ + QRegularExpression::wildcardToRegularExpression(
+ wildcardPattern,
+ QRegularExpression::UnanchoredWildcardConversion));
+ }
+
QString stringValue(const QJsonObject &obj, const QString &key)
{
if (!m_errorString.isEmpty())