some bugs fixed, logging is quite good now
This commit is contained in:
@@ -75,7 +75,7 @@ class Function;
|
||||
|
||||
class Logger {
|
||||
public:
|
||||
Logger(Command* command, Script* script);
|
||||
Logger(Command* command, Script* script, bool showLines = true);
|
||||
void operator[](QString txt);
|
||||
void operator()(QString txt);
|
||||
~Logger();
|
||||
@@ -178,17 +178,16 @@ class Command: public QObject {
|
||||
return commands;
|
||||
}
|
||||
QStringList commaSeparatedList(QString value) {
|
||||
if (!value.size()) return QStringList();
|
||||
switch (value.size()>1&&value.at(0)==value.at(value.size()-1)
|
||||
?value.at(0).toLatin1():'\0') {
|
||||
case '"': case '\'': {
|
||||
return value.mid(1, value.size()-2)
|
||||
.split(QRegularExpression(QString(value[0])+", *"
|
||||
+QString(value[0])),
|
||||
QString::SkipEmptyParts);
|
||||
+QString(value[0])));
|
||||
} break;
|
||||
default: {
|
||||
return value.split(QRegularExpression(", *"),
|
||||
QString::SkipEmptyParts);
|
||||
return value.split(QRegularExpression(", *"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -274,7 +273,11 @@ class Comment: public Command {
|
||||
return cmd;
|
||||
}
|
||||
bool execute(Script* script, QWebFrame*) {
|
||||
this->log(false);
|
||||
Logger log(this, script);
|
||||
this->log(true);
|
||||
log(_comment);
|
||||
this->log(false);
|
||||
return true;
|
||||
}
|
||||
private:
|
||||
@@ -858,10 +861,10 @@ class Script: public QObject {
|
||||
Command* cmd(command?command:_command);
|
||||
if (cmd)
|
||||
prefix += QString("%2:%3%1 ")
|
||||
.arg(QString(' ', cmd->indent()))
|
||||
.arg(cmd->file(), 20)
|
||||
.arg(cmd->line(), -4, 10);
|
||||
text = prefix+text.split('\n').join("\n "+prefix);
|
||||
.arg(QString(cmd->indent(), QChar(' ')))
|
||||
.arg(cmd->file(), 20, QChar(' '))
|
||||
.arg(cmd->line(), -4, 10, QChar(' '));
|
||||
text = prefix+text.split('\n').join("\n"+prefix+" ");
|
||||
logging(text);
|
||||
std::cout<<text<<std::endl<<std::flush;
|
||||
_cout += text + "\n";
|
||||
@@ -1953,7 +1956,7 @@ class Function: public Command {
|
||||
int indent) {
|
||||
std::shared_ptr<Function> cmd(new Function());
|
||||
if (!args.size()) throw BadArgument(tag()+" requires a <name>");
|
||||
QStringList allargs(args.split(" ", QString::SkipEmptyParts));
|
||||
QStringList allargs(args.split(" "));
|
||||
cmd->_name = allargs.takeFirst().trimmed();
|
||||
cmd->_vars = commaSeparatedList(allargs.join(' '));
|
||||
script->function(cmd->_name, cmd);
|
||||
@@ -1962,7 +1965,7 @@ class Function: public Command {
|
||||
return cmd;
|
||||
}
|
||||
bool execute(Script* script, QWebFrame*) {
|
||||
Logger log(this, script);
|
||||
Logger log(this, script, false);
|
||||
return true;
|
||||
}
|
||||
bool call(Command* parentCommand, QStringList args,
|
||||
@@ -2000,7 +2003,7 @@ class Call: public Command {
|
||||
QStringList&, QString, int, int) {
|
||||
std::shared_ptr<Call> cmd(new Call());
|
||||
if (!args.size()) throw BadArgument(tag()+" requires a <name>");
|
||||
QStringList allargs(args.split(" ", QString::SkipEmptyParts));
|
||||
QStringList allargs(args.split(" "));
|
||||
cmd->_name = allargs.takeFirst().trimmed();
|
||||
cmd->_args = commaSeparatedList(allargs.join(' '));
|
||||
return cmd;
|
||||
@@ -2060,7 +2063,7 @@ class If: public Command {
|
||||
return cmd;
|
||||
}
|
||||
bool execute(Script* script, QWebFrame* frame) {
|
||||
Logger log(this, script);
|
||||
Logger log(this, script, false);
|
||||
QString value(script->replacevars(_value));
|
||||
bool check(false);
|
||||
switch (_cmp) {
|
||||
@@ -2253,11 +2256,15 @@ inline bool Screenshot::execute(Script* script, QWebFrame* frame) {
|
||||
return true;
|
||||
}
|
||||
|
||||
inline Logger::Logger(Command* command, Script* script):
|
||||
inline Logger::Logger(Command* command, Script* script, bool showLines):
|
||||
_command(command), _script(script) {
|
||||
_previous = _script->command();
|
||||
_script->command(command);
|
||||
if (_command->log()) _script->log("\\ "+_command->command(), _command);
|
||||
if (_command->log())
|
||||
if (showLines)
|
||||
_script->log("\\ "+_command->command(), _command);
|
||||
else
|
||||
_script->log("\\ "+_command->command().split('\n').first(), _command);
|
||||
}
|
||||
inline void Logger::operator()(QString txt) {
|
||||
if (_command->log()) _script->log(" "+txt, _command);
|
||||
@@ -2266,7 +2273,7 @@ inline void Logger::operator[](QString txt) {
|
||||
_script->plainlog(txt);
|
||||
}
|
||||
inline Logger::~Logger() {
|
||||
if (_command->log()) _script->log("/ "+_command->command(), _command);
|
||||
if (_command->log()) _script->log("/ "+_command->tag(), _command);
|
||||
_script->command(_previous);
|
||||
}
|
||||
|
||||
@@ -2280,8 +2287,11 @@ inline bool Command::runScript(Command* parentCommand,
|
||||
if (args.size()!=vars.size())
|
||||
throw WrongNumberOfArguments(vars, args);
|
||||
for (QStringList::iterator var(vars.begin()), arg(args.begin());
|
||||
var<vars.end() && arg<args.end(); ++var, ++arg)
|
||||
var<vars.end() && arg<args.end(); ++var, ++arg) {
|
||||
parent->log("argument: "+*var+" = "+parent->replacevars(*arg),
|
||||
parentCommand);
|
||||
scriptCopy.set(*var, parent->replacevars(*arg));
|
||||
}
|
||||
try {
|
||||
connect(&scriptCopy, SIGNAL(logging(QString)),
|
||||
parent, SLOT(parentlog(QString)));
|
||||
|
Reference in New Issue
Block a user