changed expression evaluation: set() does not evaluate expressions, eval() does

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1654 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 17 years ago
parent 101d7f9f97
commit 16ea2da5a9

@ -67,6 +67,7 @@ DSMAction* DSMCoreModule::getAction(const string& from_str) {
DEF_CMD("disableDTMFDetection", SCDisableDTMFDetection);
DEF_CMD("set", SCSetAction);
DEF_CMD("eval", SCEvalAction);
DEF_CMD("setVar", SCSetVarAction);
DEF_CMD("var", SCGetVarAction);
DEF_CMD("append", SCAppendAction);
@ -443,11 +444,21 @@ EXEC_ACTION_START(SCSetAction) {
string var_name = (par1.length() && par1[0] == '$')?
par1.substr(1) : par1;
sc_sess->var[var_name] = resolveVars(par2, sess, sc_sess, event_params, true);
sc_sess->var[var_name] = resolveVars(par2, sess, sc_sess, event_params);
DBG("set $%s='%s'\n",
var_name.c_str(), sc_sess->var[var_name].c_str());
} EXEC_ACTION_END;
CONST_ACTION_2P(SCEvalAction,'=', false);
EXEC_ACTION_START(SCEvalAction) {
string var_name = (par1.length() && par1[0] == '$')?
par1.substr(1) : par1;
sc_sess->var[var_name] = resolveVars(par2, sess, sc_sess, event_params, true);
DBG("eval $%s='%s'\n",
var_name.c_str(), sc_sess->var[var_name].c_str());
} EXEC_ACTION_END;
CONST_ACTION_2P(SCSetVarAction,'=', false);
EXEC_ACTION_START(SCSetVarAction) {
string var_name = resolveVars(par1, sess, sc_sess, event_params);

@ -74,6 +74,7 @@ DEF_ACTION_2P(SCThrowAction);
DEF_ACTION_1P(SCThrowOnErrorAction);
DEF_ACTION_2P(SCSetAction);
DEF_ACTION_2P(SCEvalAction);
DEF_ACTION_2P(SCAppendAction);
DEF_ACTION_2P(SCSubStrAction);
DEF_ACTION_1P(SCIncAction);

@ -98,7 +98,12 @@ string resolveVars(const string ts, AmSession* sess,
}
switch(s[0]) {
case '$': return sc_sess->var[s.substr(1)];
case '$': {
map<string, string>::iterator it = sc_sess->var.find(s.substr(1));
if (it != sc_sess->var.end())
return it->second;
return "";
}
case '#':
if (event_params)
return (*event_params)[s.substr(1)];

@ -119,6 +119,9 @@ core actions:
e.g. set($var="text"); set($var=$var2); set($var=#key)
var($dstvar=srcvarname)
e.g. var($dstvar=$var_counter)
eval($var=value)
evaluate expression (only simple binary + and - supported)
e.g. set($var=1+5); set($var=$var2); set($var=#key)
append($var, value)
e.g. append($var, "text"); append($var, #key);
append($var, @select); append($var, $var2);

Loading…
Cancel
Save