qmljs: differnt language constants for the different qml flavors

Added separated qbs, qmltypes, QtQuick1, and QtQuick2
and "generic" Qml languages.
Cleaned up the mime types a bit, preparing for registered mime
types.

Change-Id: I0e484c93e003176cd659acc546baa6d024defa19
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
This commit is contained in:
Fawzi Mohamed
2012-12-06 12:11:12 +01:00
parent a839a46d4f
commit 174baf5ea1
14 changed files with 92 additions and 22 deletions

View File

@@ -83,6 +83,21 @@ using namespace QmlJS::AST;
*/
bool Document::isQmlLikeLanguage(Document::Language language)
{
switch (language) {
case QmlLanguage:
case QmlQtQuick1Language:
case QmlQtQuick2Language:
case QmlQbsLanguage:
case QmlProjectLanguage:
case QmlTypeInfoLanguage:
return true;
default:
return false;
}
}
Document::Document(const QString &fileName, Language language)
: _engine(0)
, _ast(0)
@@ -95,7 +110,7 @@ Document::Document(const QString &fileName, Language language)
QFileInfo fileInfo(fileName);
_path = QDir::cleanPath(fileInfo.absolutePath());
if (language == QmlLanguage) {
if (isQmlLikeLanguage(language)) {
_componentName = fileInfo.baseName();
if (! _componentName.isEmpty()) {
@@ -127,6 +142,8 @@ Document::Language Document::guessLanguageFromSuffix(const QString &fileName)
{
if (fileName.endsWith(QLatin1String(".qml"), Qt::CaseInsensitive))
return QmlLanguage;
if (fileName.endsWith(QLatin1String(".qbs"), Qt::CaseInsensitive))
return QmlQbsLanguage;
if (fileName.endsWith(QLatin1String(".js"), Qt::CaseInsensitive))
return JavaScriptLanguage;
if (fileName.endsWith(QLatin1String(".json"), Qt::CaseInsensitive))
@@ -141,7 +158,7 @@ Document::Ptr Document::ptr() const
bool Document::isQmlDocument() const
{
return _language == QmlLanguage;
return isQmlLikeLanguage(_language);
}
Document::Language Document::language() const
@@ -259,7 +276,7 @@ bool Document::parse_helper(int startToken)
Parser parser(_engine);
QString source = _source;
lexer.setCode(source, /*line = */ 1, /*qmlMode = */_language == QmlLanguage);
lexer.setCode(source, /*line = */ 1, /*qmlMode = */isQmlLikeLanguage(_language));
CollectDirectives collectDirectives(path());
_engine->setDirectives(&collectDirectives);