diff options
Diffstat (limited to 'src/lib/corelib/tools/scripttools.cpp')
-rw-r--r-- | src/lib/corelib/tools/scripttools.cpp | 12 |
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 {}; |