summaryrefslogtreecommitdiffstats
path: root/src/uscxml/Message.cpp
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-02-16 12:06:12 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-02-16 12:06:12 (GMT)
commit6926b730e79e1e7bbb5080c4182d8c2862b08fdc (patch)
treef8e2d31ab8772554e560bb7581fe583a2aea9d76 /src/uscxml/Message.cpp
parent1675d444d3e118742a97f5071d523dba0af22c83 (diff)
downloaduscxml-6926b730e79e1e7bbb5080c4182d8c2862b08fdc.zip
uscxml-6926b730e79e1e7bbb5080c4182d8c2862b08fdc.tar.gz
uscxml-6926b730e79e1e7bbb5080c4182d8c2862b08fdc.tar.bz2
Started uscxml debugger
Diffstat (limited to 'src/uscxml/Message.cpp')
-rw-r--r--src/uscxml/Message.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/uscxml/Message.cpp b/src/uscxml/Message.cpp
index b664fd1..bbd7f28 100644
--- a/src/uscxml/Message.cpp
+++ b/src/uscxml/Message.cpp
@@ -318,8 +318,7 @@ Data Data::fromXML(const std::string& xmlString) {
Data Data::fromJSON(const std::string& jsonString) {
Data data;
- std::string trimmed = jsonString;
- boost::trim(trimmed);
+ std::string trimmed = boost::trim_copy(jsonString);
if (trimmed.length() == 0)
return data;
@@ -387,23 +386,29 @@ Data Data::fromJSON(const std::string& jsonString) {
size_t currTok = 0;
do {
+ // used for debugging
// jsmntok_t t2 = t[currTok];
// std::string value = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start);
switch (t[currTok].type) {
case JSMN_STRING:
dataStack.back()->type = Data::VERBATIM;
- case JSMN_PRIMITIVE:
- dataStack.back()->atom = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start);
+ case JSMN_PRIMITIVE: {
+ std::string value = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start);
+ if (dataStack.back()->type == Data::VERBATIM) {
+ boost::replace_all(value, "\\\"", "\"");
+ }
+ dataStack.back()->atom = value;
dataStack.pop_back();
currTok++;
break;
+ }
case JSMN_OBJECT:
case JSMN_ARRAY:
tokenStack.push_back(t[currTok]);
currTok++;
break;
}
-
+ // used for debugging
// t2 = t[currTok];
// value = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start);
@@ -419,7 +424,8 @@ Data Data::fromJSON(const std::string& jsonString) {
if (tokenStack.back().type == JSMN_OBJECT && (t[currTok].type == JSMN_PRIMITIVE || t[currTok].type == JSMN_STRING)) {
// grab key and push new data
- dataStack.push_back(&(dataStack.back()->compound[trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start)]));
+ std::string value = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start);
+ dataStack.push_back(&(dataStack.back()->compound[value]));
currTok++;
}
if (tokenStack.back().type == JSMN_ARRAY) {