diff --git a/src/api.js b/src/api.js index 8c2a8ed..9f290a4 100644 --- a/src/api.js +++ b/src/api.js @@ -313,6 +313,13 @@ function qmlweb_parse($TEXT, document_type, exigent_mode) { return as("qmlpragma", pragma); } + function qmlpragma() { + next(); + var pragma = S.token.value; + next(); + return as("qmlpragma", pragma); + } + function qmlimport() { // todo next(); @@ -340,13 +347,22 @@ function qmlweb_parse($TEXT, document_type, exigent_mode) { function qmldocument() { var imports = []; - while (is("name", "import")) { - imports.push(qmlimport()); + var pragma = []; + while (true) { + if (is("name", "import")) { + imports.push(qmlimport()); + } else if (is("name", "pragma")) { + pragma.push(qmlpragma()); + } else { + break; + } } var root = qmlstatement(); if (!is("eof")) unexpected(); - return as("toplevel", imports, root); + return pragma.length > 0 ? + as("toplevel", imports, root, pragma) : + as("toplevel", imports, root); } function jsdocument() { diff --git a/tests/qml/Pragma.qml b/tests/qml/Pragma.qml new file mode 100644 index 0000000..6410d07 --- /dev/null +++ b/tests/qml/Pragma.qml @@ -0,0 +1,5 @@ +pragma Singleton +import QtQuick 2.0 + +Item { +} diff --git a/tests/qml/Pragma.qml.json b/tests/qml/Pragma.qml.json new file mode 100644 index 0000000..c877a76 --- /dev/null +++ b/tests/qml/Pragma.qml.json @@ -0,0 +1,24 @@ +[ + "toplevel", + [ + [ + "qmlimport", + "QtQuick", + 2, + "", + true + ] + ], + [ + "qmlelem", + "Item", + null, + [] + ], + [ + [ + "qmlpragma", + "Singleton" + ] + ] +] \ No newline at end of file