now also supports optional else after command if
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2015-05-09 12:27 marc
|
||||||
|
|
||||||
|
* ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
|
||||||
|
bootstrap.sh, doc/makefile.amto, src/commands.hxx,
|
||||||
|
src/testgui.hxx, src/webrunner.cxx: new commands testsuite and
|
||||||
|
testcase
|
||||||
|
|
||||||
2015-05-08 15:34 marc
|
2015-05-08 15:34 marc
|
||||||
|
|
||||||
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
|
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
## @id $Id$
|
|
||||||
#
|
|
||||||
# This file has been added by bootstrap.sh on Sat, 09 May 2015 14:15:27 +0200
|
|
||||||
# Feel free to change it or even remove and rebuild it, up to your needs
|
|
||||||
#
|
|
||||||
## 1 2 3 4 5 6 7 8
|
|
||||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = makefile.in
|
|
@@ -111,7 +111,7 @@ class Command: public QObject {
|
|||||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
|
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
void subScript(std::shared_ptr<Script> script,
|
void runScript(std::shared_ptr<Script> script,
|
||||||
Script* parent, QWebFrame* frame,
|
Script* parent, QWebFrame* frame,
|
||||||
QStringList vars = QStringList(),
|
QStringList vars = QStringList(),
|
||||||
QStringList args = QStringList());
|
QStringList args = QStringList());
|
||||||
@@ -1843,7 +1843,7 @@ class Function: public Command {
|
|||||||
bool call(QStringList args, Script* script, QWebFrame* frame) {
|
bool call(QStringList args, Script* script, QWebFrame* frame) {
|
||||||
Logger log(this, script);
|
Logger log(this, script);
|
||||||
try {
|
try {
|
||||||
subScript(_script, script, frame, _vars, args);
|
runScript(_script, script, frame, _vars, args);
|
||||||
} catch (const std::exception& x) {
|
} catch (const std::exception& x) {
|
||||||
throw FunctionCallFailed(_name, _vars, args, x);
|
throw FunctionCallFailed(_name, _vars, args, x);
|
||||||
}
|
}
|
||||||
@@ -1902,12 +1902,17 @@ class If: public Command {
|
|||||||
" <command1>\n"
|
" <command1>\n"
|
||||||
" <command2>\n"
|
" <command2>\n"
|
||||||
" <...>\n"
|
" <...>\n"
|
||||||
|
"else\n"
|
||||||
|
" <command3>\n"
|
||||||
|
" <command4>\n"
|
||||||
|
" <...>\n"
|
||||||
"\n\n"
|
"\n\n"
|
||||||
"Execute commands conditionally. "
|
"Execute commands conditionally. "
|
||||||
"The comparision <cmp> can be = ^ ~ < >, "
|
"The comparision <cmp> can be = ^ ~ < >, "
|
||||||
"which means equal, different, match, "
|
"which means equal, different, match, "
|
||||||
"less (as integer), bigger (as integer). "
|
"less (as integer), bigger (as integer). "
|
||||||
"Match allows a regular expression.";
|
"Match allows a regular expression. "
|
||||||
|
"There is an optional else part.";
|
||||||
}
|
}
|
||||||
QString command() const {
|
QString command() const {
|
||||||
return tag()+" "+_variable+" "+QString(_cmp)+" "+_value
|
return tag()+" "+_variable+" "+QString(_cmp)+" "+_value
|
||||||
@@ -1923,6 +1928,11 @@ class If: public Command {
|
|||||||
cmd->_value = args.mid(pos+1).trimmed();
|
cmd->_value = args.mid(pos+1).trimmed();
|
||||||
cmd->_script = std::shared_ptr<Script>(new Script);
|
cmd->_script = std::shared_ptr<Script>(new Script);
|
||||||
cmd->_script->parse(subCommandBlock(in));
|
cmd->_script->parse(subCommandBlock(in));
|
||||||
|
if (in.size() && in.first().contains(QRegularExpression("^else *$"))) {
|
||||||
|
in.removeFirst();
|
||||||
|
cmd->_else = std::shared_ptr<Script>(new Script);
|
||||||
|
cmd->_else->parse(subCommandBlock(in));
|
||||||
|
}
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
bool execute(Script* script, QWebFrame* frame) {
|
bool execute(Script* script, QWebFrame* frame) {
|
||||||
@@ -1943,7 +1953,8 @@ class If: public Command {
|
|||||||
break;
|
break;
|
||||||
default:;
|
default:;
|
||||||
}
|
}
|
||||||
if (check) subScript(_script, script, frame);
|
if (check) runScript(_script, script, frame);
|
||||||
|
else if (_else) runScript(_else, script, frame);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
@@ -1951,6 +1962,7 @@ class If: public Command {
|
|||||||
char _cmp;
|
char _cmp;
|
||||||
QString _value;
|
QString _value;
|
||||||
std::shared_ptr<Script> _script;
|
std::shared_ptr<Script> _script;
|
||||||
|
std::shared_ptr<Script> _else;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TestSuite: public Command {
|
class TestSuite: public Command {
|
||||||
@@ -2067,7 +2079,7 @@ inline Logger::~Logger() {
|
|||||||
_script->log("---------------------");
|
_script->log("---------------------");
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Command::subScript(std::shared_ptr<Script> script,
|
inline void Command::runScript(std::shared_ptr<Script> script,
|
||||||
Script* parent, QWebFrame* frame,
|
Script* parent, QWebFrame* frame,
|
||||||
QStringList vars,
|
QStringList vars,
|
||||||
QStringList args) {
|
QStringList args) {
|
||||||
|
Reference in New Issue
Block a user