qmljs: use QRegularExpression to parse imports.

Use a regular expression to get the module name, major version and
minor version from a string representing the module import.

Change-Id: I99f85ff4844cdfba142b45b4881241a1d40b772e
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
This commit is contained in:
Marco Benelli
2016-04-20 15:51:04 +02:00
committed by Marco Benelli
parent f22e8d6fea
commit aecc590390

View File

@@ -34,6 +34,7 @@
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <QDir> #include <QDir>
#include <QRegularExpression>
using namespace LanguageUtils; using namespace LanguageUtils;
using namespace QmlJS; using namespace QmlJS;
@@ -417,17 +418,16 @@ void PluginDumper::loadQmlTypeDescription(const QStringList &paths,
*/ */
QString PluginDumper::buildQmltypesPath(const QString &name) const QString PluginDumper::buildQmltypesPath(const QString &name) const
{ {
QStringList importName = name.split(QLatin1Char(' ')); QString qualifiedName;
QString qualifiedName = importName[0];
QString majorVersion; QString majorVersion;
QString minorVersion; QString minorVersion;
if (importName.length() == 2) {
QString versionString = importName[1]; QRegularExpression import("^(?<name>[\\w|\\.]+)\\s+(?<major>\\d+)\\.(?<minor>\\d+)$");
QStringList version = versionString.split(QLatin1Char('.')); QRegularExpressionMatch m = import.match(name);
if (version.length() == 2) { if (m.hasMatch()) {
majorVersion = version[0]; qualifiedName = m.captured("name");
minorVersion = version[1]; majorVersion = m.captured("major");
} minorVersion = m.captured("minor");
} }
for (const PathAndLanguage &p: m_modelManager->importPaths()) { for (const PathAndLanguage &p: m_modelManager->importPaths()) {