summaryrefslogtreecommitdiff
path: root/src/lib/corelib/tools/scripttools.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/tools/scripttools.cpp')
-rw-r--r--src/lib/corelib/tools/scripttools.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/corelib/tools/scripttools.cpp b/src/lib/corelib/tools/scripttools.cpp
index 4953bbbb5..a9fa1955d 100644
--- a/src/lib/corelib/tools/scripttools.cpp
+++ b/src/lib/corelib/tools/scripttools.cpp
@@ -43,6 +43,7 @@
#include <tools/error.h>
#include <QtCore/qdatastream.h>
+#include <QtCore/qdatetime.h>
namespace qbs {
namespace Internal {
@@ -235,6 +236,8 @@ JSValue makeJsVariant(JSContext *ctx, const QVariant &v)
return JS_NewInt64(ctx, v.toInt());
case QMetaType::Bool:
return JS_NewBool(ctx, v.toBool());
+ case QMetaType::QDateTime:
+ return JS_NewDate(ctx, v.toDateTime().toString(Qt::ISODateWithMs).toUtf8().constData());
case QMetaType::QVariantMap:
return makeJsVariantMap(ctx, v.toMap());
default:
@@ -277,6 +280,15 @@ static QVariant getJsVariantImpl(JSContext *ctx, JSValue val, QList<JSValue> pat
}
return l;
}
+ if (JS_IsDate(val)) {
+ ScopedJsValue toString(ctx, getJsProperty(ctx, val, QLatin1String("toISOString")));
+ if (!JS_IsFunction(ctx, toString))
+ return {};
+ ScopedJsValue dateString(ctx, JS_Call(ctx, toString, val, 0, nullptr));
+ if (!JS_IsString(dateString))
+ return {};
+ return QDateTime::fromString(getJsString(ctx, dateString), Qt::ISODateWithMs);
+ }
if (JS_IsObject(val)) {
if (path.contains(val))
return {};