diff options
author | alexzhornyak <alexander.zhornyak@gmail.com> | 2017-05-07 17:00:12 (GMT) |
---|---|---|
committer | alexzhornyak <alexander.zhornyak@gmail.com> | 2017-05-07 17:00:12 (GMT) |
commit | 43936ecb53a0eb582eaf3a56ec0c016f8c47ae7f (patch) | |
tree | 2ea3905b58db14856b141cde0aeefb0aead04bd2 /src/uscxml/plugins/datamodel/lua | |
parent | 75bf929119ca976e0d6b8da75770d07b510d5824 (diff) | |
download | uscxml-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.cpp | 46 | ||||
-rw-r--r-- | src/uscxml/plugins/datamodel/lua/LuaDataModel.h | 1 |
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); |