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
18#include "ConsoleScriptingInterface.h"18#include "ConsoleScriptingInterface.h"
19#include "ScriptEngine.h"19#include "ScriptEngine.h"
20 20
21#define INDENTATION 421#define INDENTATION 4 // 1 Tab - 4 spaces
22const QString LINE_SEPARATOR = "\n ";22const QString LINE_SEPARATOR = "\n ";
23const QString SPACE_SEPARATOR = " ";
23const QString STACK_TRACE_FORMAT = "\n[Stacktrace]%1%2";24const QString STACK_TRACE_FORMAT = "\n[Stacktrace]%1%2";
25QList<QString> ConsoleScriptingInterface::_groupDetails = QList<QString>();
24 26
25void ConsoleScriptingInterface::info(QString message) {27QScriptValue ConsoleScriptingInterface::info(QScriptContext* context, QScriptEngine* engine) {
26 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {28 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
27 scriptEngine->scriptInfoMessage(message);29 scriptEngine->scriptInfoMessage(appendArguments(context));
28 }30 }
31 return QScriptValue::NullValue;
29}32}
30 33
31void ConsoleScriptingInterface::log(QString message) {34QScriptValue ConsoleScriptingInterface::log(QScriptContext* context, QScriptEngine* engine) {
35 QString message = appendArguments(context);
32 if (_groupDetails.count() == 0) {36 if (_groupDetails.count() == 0) {
33 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {37 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
34 scriptEngine->scriptPrintedMessage(message);38 scriptEngine->scriptPrintedMessage(message);
35 }39 }
36 } else {40 } else {
37 this->logGroupMessage(message);41 logGroupMessage(message, engine);
38 }42 }
43 return QScriptValue::NullValue;
39}44}
40 45
41void ConsoleScriptingInterface::debug(QString message) {46QScriptValue ConsoleScriptingInterface::debug(QScriptContext* context, QScriptEngine* engine) {
42 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {47 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
43 scriptEngine->scriptPrintedMessage(message);48 scriptEngine->scriptPrintedMessage(appendArguments(context));
44 }49 }
50 return QScriptValue::NullValue;
45}51}
46 52
47void ConsoleScriptingInterface::warn(QString message) {53QScriptValue ConsoleScriptingInterface::warn(QScriptContext* context, QScriptEngine* engine) {
48 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {54 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
49 scriptEngine->scriptWarningMessage(message);55 scriptEngine->scriptWarningMessage(appendArguments(context));
50 }56 }
57 return QScriptValue::NullValue;
51}58}
52 59
53void ConsoleScriptingInterface::error(QString message) {60QScriptValue ConsoleScriptingInterface::error(QScriptContext* context, QScriptEngine* engine) {
54 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {61 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
55 scriptEngine->scriptErrorMessage(message);62 scriptEngine->scriptErrorMessage(appendArguments(context));
56 }63 }
64 return QScriptValue::NullValue;
57}65}
58 66
59void ConsoleScriptingInterface::exception(QString message) {67QScriptValue ConsoleScriptingInterface::exception(QScriptContext* context, QScriptEngine* engine) {
60 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {68 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
61 scriptEngine->scriptErrorMessage(message);69 scriptEngine->scriptErrorMessage(appendArguments(context));
62 }70 }
71 return QScriptValue::NullValue;
63}72}
64 73
65void ConsoleScriptingInterface::time(QString labelName) {74void ConsoleScriptingInterface::time(QString labelName) {
66 _timerDetails.insert(labelName, QDateTime::currentDateTime().toUTC());75 _timerDetails.insert(labelName, QDateTime::currentDateTime().toUTC());
67 QString message = QString("%1: timer started").arg(labelName);76 QString message = QString("%1: Timer started").arg(labelName);
68 this->log(message);77 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
78 scriptEngine->scriptPrintedMessage(message);
79 }
69}80}
70 81
71void ConsoleScriptingInterface::timeEnd(QString labelName) {82void ConsoleScriptingInterface::timeEnd(QString labelName) {
72 if (!_timerDetails.contains(labelName)) {83 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
73 this->error("No such label found " + labelName);84 if (!_timerDetails.contains(labelName)) {
74 return;85 scriptEngine->scriptErrorMessage("No such label found " + labelName);
75 }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);
76 97
77 if (_timerDetails.value(labelName).isNull()) {98 QString message = QString("%1: %2ms").arg(labelName).arg(QString::number(diffInMS));
78 _timerDetails.remove(labelName);99 _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);
89 100
90 this->log(message);101 scriptEngine->scriptPrintedMessage(message);
102 }
91}103}
92 104
93void ConsoleScriptingInterface::asserts(bool condition, QString message) {105QScriptValue 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;
94 if (!condition) {117 if (!condition) {
95 QString assertionResult;
96 if (message.isEmpty()) {118 if (message.isEmpty()) {
97 assertionResult = "Assertion failed";119 assertionResult = "Assertion failed";
98 } else {120 } else {
99 assertionResult = QString("Assertion failed : %1").arg(message);121 assertionResult = QString("Assertion failed : %1").arg(message);
100 }122 }
101 this->error(assertionResult);123 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
124 scriptEngine->scriptErrorMessage(assertionResult);
125 }
102 }126 }
127 return QScriptValue::NullValue;
103}128}
104 129
105void ConsoleScriptingInterface::trace() {130void ConsoleScriptingInterface::trace() {
106 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) { 131 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
107 scriptEngine->scriptPrintedMessage132 scriptEngine->scriptPrintedMessage
108 (QString(STACK_TRACE_FORMAT).arg(LINE_SEPARATOR,133 (QString(STACK_TRACE_FORMAT).arg(LINE_SEPARATOR,
109 scriptEngine->currentContext()->backtrace().join(LINE_SEPARATOR)));134 scriptEngine->currentContext()->backtrace().join(LINE_SEPARATOR)));
110 }135 }
111}136}
112 137
113void ConsoleScriptingInterface::clear() {138void ConsoleScriptingInterface::clear() {
114 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {139 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
115 scriptEngine->clearDebugLogWindow();140 scriptEngine->clearDebugLogWindow();
116 }141 }
117}142}
118 143
119void ConsoleScriptingInterface::group(QString groupName) {144QScriptValue ConsoleScriptingInterface::group(QScriptContext* context, QScriptEngine* engine) {
120 this->logGroupMessage(groupName);145 logGroupMessage(context->argument(0).toString(), engine); // accept first parameter as label
121 _groupDetails.push_back(groupName);146 _groupDetails.push_back(context->argument(0).toString());
147 return QScriptValue::NullValue;
122}148}
123 149
124void ConsoleScriptingInterface::groupCollapsed(QString groupName) {150QScriptValue ConsoleScriptingInterface::groupCollapsed(QScriptContext* context, QScriptEngine* engine) {
125 this->logGroupMessage(groupName);151 logGroupMessage(context->argument(0).toString(), engine); // accept first parameter as label
126 _groupDetails.push_back(groupName);152 _groupDetails.push_back(context->argument(0).toString());
153 return QScriptValue::NullValue;
127}154}
128 155
129void ConsoleScriptingInterface::groupEnd() {156QScriptValue ConsoleScriptingInterface::groupEnd(QScriptContext* context, QScriptEngine* engine) {
130 _groupDetails.removeLast();157 ConsoleScriptingInterface::_groupDetails.removeLast();
158 return QScriptValue::NullValue;
131}159}
132 160
133void ConsoleScriptingInterface::logGroupMessage(QString message) {161QString ConsoleScriptingInterface::appendArguments(QScriptContext* context) {
134 int _appendIndentation = _groupDetails.count() * INDENTATION;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
172void ConsoleScriptingInterface::logGroupMessage(QString message, QScriptEngine* engine) {
173 int _addSpaces = _groupDetails.count() * INDENTATION;
135 QString logMessage;174 QString logMessage;
136 for (int count = 0; count < _appendIndentation; count++) {175 for (int i = 0; i < _addSpaces; i++) {
137 logMessage.append(" ");176 logMessage.append(SPACE_SEPARATOR);
138 }177 }
139 logMessage.append(message);178 logMessage.append(message);
140 this->debug(logMessage);179 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
180 scriptEngine->scriptPrintedMessage(logMessage);
181 }
141}182}