diff options
Diffstat (limited to 'src/interpreter/imports/qtsystemtest/scripts/Datatype.js')
-rw-r--r-- | src/interpreter/imports/qtsystemtest/scripts/Datatype.js | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/interpreter/imports/qtsystemtest/scripts/Datatype.js b/src/interpreter/imports/qtsystemtest/scripts/Datatype.js new file mode 100644 index 0000000..1b2fa7a --- /dev/null +++ b/src/interpreter/imports/qtsystemtest/scripts/Datatype.js @@ -0,0 +1,142 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of QtSystemTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +.pragma library + +/// FIXME: Qt5, Error.stack can be enabled by calling prepareStack once +Object.defineProperties(Error.prototype, { + __addStack: { + value: function(level) { + if (this.stack) { + return; + } + + var stack = level === undefined ? Qt.qst.stack() : Qt.qst.stack(level); + // this function (top of the stack) with the right values from Error + stack[0] = { + fileName: this.fileName, + lineNumber: this.lineNumber, + functionName: '<unknown function>' + }; + this.stack = stack; + } + } +}); + + +Object.defineProperties(Array.prototype, { + isEmpty: { + value: function() { return this.length === 0; } + }, + + clear: { + value: function() { this.length = 0; } + }, + + last: { + value: function() { return this[this.length-1]; } + }, + + first: { + value: function() { return this[0]; } + }, + + contains: { + value: function(element) { + if (this === undefined || this === null) { + throw new TypeError(); + } + return this.indexOf(element) !== -1; + } + }, + + remove: { + value: function(from, to) { + var rest = this.slice((to || from) + 1 || this.length); + this.length = from < 0 ? this.length + from : from; + return this.push.apply(this, rest); + } + } +}); + + +Object.defineProperties(String.prototype, { + startsWith: { + value: function(prefix) { return this.indexOf(prefix) === 0; } + }, + + endsWith: { + value: function(suffix) { + return this.indexOf(suffix, this.length - suffix.length) !== -1; } + }, + + left: { + value: function(len) { return this.substring(0, len); } + }, + + right: { + value: function(len) { return this.substring(this.length- len); } + }, + + repeat: { + value: function( num ) { return new Array( num + 1 ).join(this); } + }, + trim: { + value: function() { return this.replace(/^\s+|\s+$/g, ""); } + } +}); + + +Date.timestamp = function() { + function pad(n, places) { + var str = ''+n; + if ( str.length >= places) { + return str; + } + return '0'.repeat(places - str.length) + str; + } + var now = new Date(); + var timestamp = pad(now.getHours(), 2) + ':' + + pad( now.getMinutes(), 2) + ':' + + pad( now.getSeconds(), 2) + ' - ' + + pad( now.getMilliseconds(), 3); + return timestamp; +} |