diff options
-rw-r--r-- | src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp | 9 | ||||
-rw-r--r-- | test/issues/test-issue84.scxml | 22 |
2 files changed, 27 insertions, 4 deletions
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp index 67294da..717def9 100644 --- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp +++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp @@ -73,18 +73,19 @@ static Data getLuaAsData(lua_State* _luaState, const luabridge::LuaRef& lua) { data.atom = toStr(lua.cast<int>()); data.type = Data::INTERPRETED; } else if(lua.isString()) { - data.atom = lua.tostring(); + data.atom = lua.cast<std::string>(); data.type = Data::VERBATIM; } else if(lua.isTable()) { bool isArray = false; bool isMap = false; for (luabridge::Iterator iter (lua); !iter.isNil(); ++iter) { - luabridge::LuaRef luaKey = iter.key(); + luabridge::LuaRef luaKey = iter.key(); luabridge::LuaRef luaVal = *iter; if (luaKey.isString()) { - assert(!isArray); + assert(!isArray); isMap = true; - data.compound[luaKey.tostring()] = getLuaAsData(_luaState, luaVal); + // luaKey.tostring() is not working?! see issue84 + data.compound[luaKey.cast<std::string>()] = getLuaAsData(_luaState, luaVal); } else { assert(!isMap); isArray = true; diff --git a/test/issues/test-issue84.scxml b/test/issues/test-issue84.scxml new file mode 100644 index 0000000..09fd265 --- /dev/null +++ b/test/issues/test-issue84.scxml @@ -0,0 +1,22 @@ +<scxml datamodel="lua" initial="Start" name="Root" version="1.0" xmlns="http://www.w3.org/2005/07/scxml"> + <datamodel> + <data id="testTable">{ + a=555,b=777,c=888 +} + </data> + </datamodel> + <final id="pass"/> + <final id="fail"/> + <state id="Start"> + <onentry> + <script>print('*************************') +print(type(testTable)) +for k,v in pairs(testTable) do + print(string.format("key=%s,value=%s",tostring(k),tostring(v))) +end + </script> + </onentry> + <transition target="pass"/> + <transition event="error.*" target="Fail"/> + </state> +</scxml> |