summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2017-01-13 16:47:44 (GMT)
committerStefan Radomski <github@mintwerk.de>2017-01-13 16:47:44 (GMT)
commit4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235 (patch)
tree8c023473bb342780ddf51a893d18369f1319bb5c /src/uscxml/plugins/datamodel/ecmascript
parent0aa0fe08dc308c94379c47d0bf9745e341cb4c81 (diff)
downloaduscxml-4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235.zip
uscxml-4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235.tar.gz
uscxml-4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235.tar.bz2
First support for serialization and some bug fixes for DOM per data.src
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
index aae0111..22e8ccc 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
@@ -395,8 +395,14 @@ void JSCDataModel::setEvent(const Event& event) {
}
Data JSCDataModel::evalAsData(const std::string& content) {
- JSValueRef result = evalAsValue(content);
- return getValueAsData(result);
+ try {
+ JSValueRef result = evalAsValue(content);
+ return getValueAsData(result);
+ } catch (ErrorEvent e) {
+ // test453 vs test554
+ throw e;
+// return Data(content, Data::INTERPRETED);
+ }
}
Data JSCDataModel::getAsData(const std::string& content) {
@@ -593,7 +599,7 @@ void JSCDataModel::setForeach(const std::string& item,
const std::string& index,
uint32_t iteration) {
if (!isDeclared(item)) {
- assign(item, Data());
+ assign(item, Data("null", Data::INTERPRETED));
}
// assign array element to item
std::stringstream ss;
@@ -710,7 +716,11 @@ void JSCDataModel::assign(const std::string& location, const Data& data) {
void JSCDataModel::init(const std::string& location, const Data& data) {
try {
- assign(location, data);
+ if (data.empty()) {
+ assign(location, Data("null", Data::INTERPRETED));
+ } else {
+ assign(location, data);
+ }
} catch (ErrorEvent e) {
// test 277
evalAsValue(location + " = undefined", true);