ImportKey::ImportKey(const ImportInfo &info) : type(info.type()) , majorVersion(info.version().majorVersion()) , minorVersion(info.version().minorVersion()) { splitPath = QFileInfo(info.path()).canonicalFilePath().split(QLatin1Char('/'), QString::KeepEmptyParts); }
bool Bind::visit(UiImport *ast) { ComponentVersion version; if (ast->versionToken.isValid()) { const QString versionString = _doc->source().mid(ast->versionToken.offset, ast->versionToken.length); version = ComponentVersion(versionString); if (!version.isValid()) { _diagnosticMessages->append( errorMessage(ast->versionToken, tr("expected two numbers separated by a dot"))); } } if (ast->importUri) { if (!version.isValid()) { _diagnosticMessages->append( errorMessage(ast, tr("package import requires a version number"))); } const QString importId = ast->importId.toString(); ImportInfo import = ImportInfo::moduleImport(toString(ast->importUri), version, importId, ast); if (_doc->language() == Dialect::Qml) { const QString importStr = import.name() + importId; if (ModelManagerInterface::instance()) { QmlLanguageBundles langBundles = ModelManagerInterface::instance()->extendedBundles(); QmlBundle qq1 = langBundles.bundleForLanguage(Dialect::QmlQtQuick1); QmlBundle qq2 = langBundles.bundleForLanguage(Dialect::QmlQtQuick2); bool isQQ1 = qq1.supportedImports().contains(importStr); bool isQQ2 = qq2.supportedImports().contains(importStr); if (isQQ1 && ! isQQ2) _doc->setLanguage(Dialect::QmlQtQuick1); if (isQQ2 && ! isQQ1) _doc->setLanguage(Dialect::QmlQtQuick2); } } _imports += import; } else if (!ast->fileName.isEmpty()) { _imports += ImportInfo::pathImport(_doc->path(), ast->fileName.toString(), version, ast->importId.toString(), ast); } else { _imports += ImportInfo::invalidImport(ast); } return false; }
/* import "content" import "content" as Xxx import "content" 4.6 import "content" 4.6 as Xxx import "http://www.ovi.com/" as Ovi import "file.js" as Foo */ Import LinkPrivate::importFileOrDirectory(Document::Ptr doc, const ImportInfo &importInfo) { Import import; import.info = importInfo; import.object = 0; import.valid = true; QString path = importInfo.path(); if (importInfo.type() == ImportType::Directory || importInfo.type() == ImportType::ImplicitDirectory) { import.object = new ObjectValue(valueOwner); importLibrary(doc, path, &import); const QList<Document::Ptr> &documentsInDirectory = snapshot.documentsInDirectory(path); foreach (Document::Ptr importedDoc, documentsInDirectory) { if (importedDoc->bind()->rootObjectValue()) { const QString targetName = importedDoc->componentName(); import.object->setMember(targetName, importedDoc->bind()->rootObjectValue()); } } } else if (importInfo.type() == ImportType::File) {