summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/lua
diff options
context:
space:
mode:
authoralexzhornyak <alexander.zhornyak@gmail.com>2017-05-07 17:00:12 (GMT)
committeralexzhornyak <alexander.zhornyak@gmail.com>2017-05-07 17:00:12 (GMT)
commit43936ecb53a0eb582eaf3a56ec0c016f8c47ae7f (patch)
tree2ea3905b58db14856b141cde0aeefb0aead04bd2 /src/uscxml/plugins/datamodel/lua
parent75bf929119ca976e0d6b8da75770d07b510d5824 (diff)
downloaduscxml-43936ecb53a0eb582eaf3a56ec0c016f8c47ae7f.zip
uscxml-43936ecb53a0eb582eaf3a56ec0c016f8c47ae7f.tar.gz
uscxml-43936ecb53a0eb582eaf3a56ec0c016f8c47ae7f.tar.bz2
evalAsScript
Implemented evalAsScript function
Diffstat (limited to 'src/uscxml/plugins/datamodel/lua')
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp46
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.h1
2 files changed, 12 insertions, 35 deletions
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
index 2071d39..97d3637 100644
--- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
@@ -350,49 +350,25 @@ void LuaDataModel::setEvent(const Event& event) {
Data LuaDataModel::evalAsData(const std::string& content) {
Data data;
- ErrorEvent originalError;
std::string trimmedExpr = boost::trim_copy(content);
- try {
- int retVals = luaEval(_luaState, "return(" + trimmedExpr + ")");
- if (retVals == 1) {
- data = getLuaAsData(_luaState, luabridge::LuaRef::fromStack(_luaState, -1));
- }
- lua_pop(_luaState, retVals);
- return data;
- } catch (ErrorEvent e) {
- originalError = e;
- }
-
- int retVals = 0;
- try {
- // evaluate again without the return()
- retVals = luaEval(_luaState, trimmedExpr);
- } catch (ErrorEvent e) {
- throw originalError; // we will assume syntax error and throw
- }
-
-#if 1
- // Note: Empty result is not an error test302, but how to do test488?
- if (retVals == 0 && !isValidSyntax(trimmedExpr)) {
- throw originalError; // we will assume syntax error and throw
+ int retVals = luaEval(_luaState, "return(" + trimmedExpr + ")");
+ if (retVals == 1) {
+ data = getLuaAsData(_luaState, luabridge::LuaRef::fromStack(_luaState, -1));
}
-#endif
+ lua_pop(_luaState, retVals);
+ return data;
+}
- try {
- if (retVals == 1) {
- data = getLuaAsData(_luaState, luabridge::LuaRef::fromStack(_luaState, -1));
- }
- lua_pop(_luaState, retVals);
- return data;
+void LuaDataModel::evalAsScript(const std::string& content) {
+ Data data;
- } catch (ErrorEvent e) {
- throw e; // we will assume syntax error and throw
- }
+ std::string trimmedExpr = boost::trim_copy(content);
+ int retVals = luaEval(_luaState, trimmedExpr);
- return data;
+ lua_pop(_luaState, retVals);
}
bool LuaDataModel::isValidSyntax(const std::string& expr) {
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.h b/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
index c64656a..a71a734 100644
--- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
+++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
@@ -74,6 +74,7 @@ public:
virtual bool evalAsBool(const std::string& expr);
virtual Data evalAsData(const std::string& expr);
+ virtual void evalAsScript(const std::string& content);
virtual Data getAsData(const std::string& content);
virtual bool isDeclared(const std::string& expr);