History

Resolve comments of @zappoman. -- Rename "asserts" to "assert" -- Log printing methods will accept lists of objects or strings.

NeetBhagat committed 9 years ago

Commit 2909aa91 parent a6b1b174 files · +141 −81Browse files

Showing the changes to libraries/script-engine/src/ConsoleScriptingInterface.cpp (1 of 4 files). Show all

Unified · Split

libraries/script-engine/src/ConsoleScriptingInterface.cpp+98−57
@@ -18,124 +18,165 @@ · 17 unmodified lines
1818 #include "ConsoleScriptingInterface.h"
1919 #include "ScriptEngine.h"
2020
21−#define INDENTATION 4
21+#define INDENTATION 4 // 1 Tab - 4 spaces
2222 const QString LINE_SEPARATOR = "\n ";
23+const QString SPACE_SEPARATOR = " ";
2324 const QString STACK_TRACE_FORMAT = "\n[Stacktrace]%1%2";
25+QList<QString> ConsoleScriptingInterface::_groupDetails = QList<QString>();
2426
25−void ConsoleScriptingInterface::info(QString message) {
26− if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
27− scriptEngine->scriptInfoMessage(message);
27+QScriptValue ConsoleScriptingInterface::info(QScriptContext* context, QScriptEngine* engine) {
28+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
29+ scriptEngine->scriptInfoMessage(appendArguments(context));
2830 }
31+ return QScriptValue::NullValue;
2932 }
3033
31−void ConsoleScriptingInterface::log(QString message) {
34+QScriptValue ConsoleScriptingInterface::log(QScriptContext* context, QScriptEngine* engine) {
35+ QString message = appendArguments(context);
3236 if (_groupDetails.count() == 0) {
33− if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
37+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
3438 scriptEngine->scriptPrintedMessage(message);
3539 }
3640 } else {
37− this->logGroupMessage(message);
41+ logGroupMessage(message, engine);
3842 }
43+ return QScriptValue::NullValue;
3944 }
4045
41−void ConsoleScriptingInterface::debug(QString message) {
42− if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
43− scriptEngine->scriptPrintedMessage(message);
46+QScriptValue ConsoleScriptingInterface::debug(QScriptContext* context, QScriptEngine* engine) {
47+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
48+ scriptEngine->scriptPrintedMessage(appendArguments(context));
4449 }
50+ return QScriptValue::NullValue;
4551 }
4652
47−void ConsoleScriptingInterface::warn(QString message) {
48− if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
49− scriptEngine->scriptWarningMessage(message);
53+QScriptValue ConsoleScriptingInterface::warn(QScriptContext* context, QScriptEngine* engine) {
54+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
55+ scriptEngine->scriptWarningMessage(appendArguments(context));
5056 }
57+ return QScriptValue::NullValue;
5158 }
5259
53−void ConsoleScriptingInterface::error(QString message) {
54− if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
55− scriptEngine->scriptErrorMessage(message);
60+QScriptValue ConsoleScriptingInterface::error(QScriptContext* context, QScriptEngine* engine) {
61+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
62+ scriptEngine->scriptErrorMessage(appendArguments(context));
5663 }
64+ return QScriptValue::NullValue;
5765 }
5866
59−void ConsoleScriptingInterface::exception(QString message) {
60− if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
61− scriptEngine->scriptErrorMessage(message);
67+QScriptValue ConsoleScriptingInterface::exception(QScriptContext* context, QScriptEngine* engine) {
68+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
69+ scriptEngine->scriptErrorMessage(appendArguments(context));
6270 }
71+ return QScriptValue::NullValue;
6372 }
6473
65−void ConsoleScriptingInterface::time(QString labelName) {
74+void ConsoleScriptingInterface::time(QString labelName) {
6675 _timerDetails.insert(labelName, QDateTime::currentDateTime().toUTC());
67− QString message = QString("%1: timer started").arg(labelName);
68− this->log(message);
76+ QString message = QString("%1: Timer started").arg(labelName);
77+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
78+ scriptEngine->scriptPrintedMessage(message);
79+ }
6980 }
7081
7182 void ConsoleScriptingInterface::timeEnd(QString labelName) {
72− if (!_timerDetails.contains(labelName)) {
73− this->error("No such label found " + labelName);
74− return;
75− }
83+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
84+ if (!_timerDetails.contains(labelName)) {
85+ scriptEngine->scriptErrorMessage("No such label found " + labelName);
86+ return;
87+ }
88+
89+ if (_timerDetails.value(labelName).isNull()) {
90+ _timerDetails.remove(labelName);
91+ scriptEngine->scriptErrorMessage("Invalid start time for " + labelName);
92+ return;
93+ }
94+ QDateTime _startTime = _timerDetails.value(labelName);
95+ QDateTime _endTime = QDateTime::currentDateTime().toUTC();
96+ qint64 diffInMS = _startTime.msecsTo(_endTime);
7697
77− if (_timerDetails.value(labelName).isNull()) {
98+ QString message = QString("%1: %2ms").arg(labelName).arg(QString::number(diffInMS));
7899 _timerDetails.remove(labelName);
79− this->error("Invalid start time for " + labelName);
80− return;
81− }
82−
83− QDateTime _startTime = _timerDetails.value(labelName);
84− QDateTime _endTime = QDateTime::currentDateTime().toUTC();
85− qint64 diffInMS = _startTime.msecsTo(_endTime);
86−
87− QString message = QString("%1: %2ms").arg(labelName).arg(QString::number(diffInMS));
88− _timerDetails.remove(labelName);
89100
90− this->log(message);
101+ scriptEngine->scriptPrintedMessage(message);
102+ }
91103 }
92104
93−void ConsoleScriptingInterface::asserts(bool condition, QString message) {
105+QScriptValue ConsoleScriptingInterface::assertion(QScriptContext* context, QScriptEngine* engine) {
106+ QString message;
107+ bool condition = false;
108+ for (int i = 0; i < context->argumentCount(); i++) {
109+ if (i == 0) {
110+ condition = context->argument(i).toBool(); // accept first value as condition
111+ } else {
112+ message += SPACE_SEPARATOR + context->argument(i).toString(); // accept other parameters as message
113+ }
114+ }
115+
116+ QString assertionResult;
94117 if (!condition) {
95− QString assertionResult;
96118 if (message.isEmpty()) {
97119 assertionResult = "Assertion failed";
98120 } else {
99121 assertionResult = QString("Assertion failed : %1").arg(message);
100122 }
101− this->error(assertionResult);
123+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
124+ scriptEngine->scriptErrorMessage(assertionResult);
125+ }
102126 }
127+ return QScriptValue::NullValue;
103128 }
104129
105−void ConsoleScriptingInterface::trace() {
106− if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
130+void ConsoleScriptingInterface::trace() {
131+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
107132 scriptEngine->scriptPrintedMessage
108133 (QString(STACK_TRACE_FORMAT).arg(LINE_SEPARATOR,
109134 scriptEngine->currentContext()->backtrace().join(LINE_SEPARATOR)));
110135 }
111136 }
112137
113−void ConsoleScriptingInterface::clear() {
138+void ConsoleScriptingInterface::clear() {
114139 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
115140 scriptEngine->clearDebugLogWindow();
116141 }
117142 }
118143
119−void ConsoleScriptingInterface::group(QString groupName) {
120− this->logGroupMessage(groupName);
121− _groupDetails.push_back(groupName);
144+QScriptValue ConsoleScriptingInterface::group(QScriptContext* context, QScriptEngine* engine) {
145+ logGroupMessage(context->argument(0).toString(), engine); // accept first parameter as label
146+ _groupDetails.push_back(context->argument(0).toString());
147+ return QScriptValue::NullValue;
122148 }
123149
124−void ConsoleScriptingInterface::groupCollapsed(QString groupName) {
125− this->logGroupMessage(groupName);
126− _groupDetails.push_back(groupName);
150+QScriptValue ConsoleScriptingInterface::groupCollapsed(QScriptContext* context, QScriptEngine* engine) {
151+ logGroupMessage(context->argument(0).toString(), engine); // accept first parameter as label
152+ _groupDetails.push_back(context->argument(0).toString());
153+ return QScriptValue::NullValue;
127154 }
128155
129−void ConsoleScriptingInterface::groupEnd() {
130− _groupDetails.removeLast();
156+QScriptValue ConsoleScriptingInterface::groupEnd(QScriptContext* context, QScriptEngine* engine) {
157+ ConsoleScriptingInterface::_groupDetails.removeLast();
158+ return QScriptValue::NullValue;
131159 }
132160
133−void ConsoleScriptingInterface::logGroupMessage(QString message) {
134− int _appendIndentation = _groupDetails.count() * INDENTATION;
161+QString ConsoleScriptingInterface::appendArguments(QScriptContext* context) {
162+ QString message;
163+ for (int i = 0; i < context->argumentCount(); i++) {
164+ if (i > 0) {
165+ message += SPACE_SEPARATOR;
166+ }
167+ message += context->argument(i).toString();
168+ }
169+ return message;
170+}
171+
172+void ConsoleScriptingInterface::logGroupMessage(QString message, QScriptEngine* engine) {
173+ int _addSpaces = _groupDetails.count() * INDENTATION;
135174 QString logMessage;
136− for (int count = 0; count < _appendIndentation; count++) {
137− logMessage.append(" ");
175+ for (int i = 0; i < _addSpaces; i++) {
176+ logMessage.append(SPACE_SEPARATOR);
138177 }
139178 logMessage.append(message);
140− this->debug(logMessage);
179+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
180+ scriptEngine->scriptPrintedMessage(logMessage);
181+ }
141182 }