[DEV] add compatibility with the simple quote ' naming instead of "

This commit is contained in:
Edouard DUPIN 2015-01-08 21:33:02 +01:00
parent 226d95135c
commit bcab8b0706
11 changed files with 12 additions and 7 deletions

View File

@ -67,7 +67,8 @@ bool ejson::Array::iParse(const std::string& _data, size_t& _pos, ejson::filePos
} }
tmpElement->iParse(_data, iii, _filePos, _doc); tmpElement->iParse(_data, iii, _filePos, _doc);
m_value.push_back(tmpElement); m_value.push_back(tmpElement);
} else if (_data[iii] == '"') { } else if ( _data[iii] == '"'
|| _data[iii] == '\'') {
// find a string: // find a string:
JSON_PARSE_ELEMENT("find String quoted"); JSON_PARSE_ELEMENT("find String quoted");
ejson::String * tmpElement = new ejson::String(); ejson::String * tmpElement = new ejson::String();

0
ejson/Array.h Executable file → Normal file
View File

0
ejson/Boolean.h Executable file → Normal file
View File

0
ejson/Null.h Executable file → Normal file
View File

0
ejson/Number.h Executable file → Normal file
View File

View File

@ -73,14 +73,16 @@ bool ejson::Object::iParse(const std::string& _data, size_t& _pos, ejson::filePo
} else { } else {
if (mode == parseName) { if (mode == parseName) {
JSON_PARSE_ELEMENT("name START " << '"'); JSON_PARSE_ELEMENT("name START " << '"');
if (_data[iii] == '"') { if ( _data[iii] == '"'
|| _data[iii] == '\'') {
char startValue=_data[iii];
currentName = ""; currentName = "";
for (iii++; iii<_data.size(); iii++) { for (iii++; iii<_data.size(); iii++) {
_filePos.check(_data[iii]); _filePos.check(_data[iii]);
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT #ifdef ENABLE_DISPLAY_PARSED_ELEMENT
drawElementParsed(_data[iii], _filePos); drawElementParsed(_data[iii], _filePos);
#endif #endif
if (_data[iii] == '\"') { if (_data[iii] == startValue) {
mode = parseMiddle; mode = parseMiddle;
break; break;
} else { } else {
@ -92,7 +94,7 @@ bool ejson::Object::iParse(const std::string& _data, size_t& _pos, ejson::filePo
for (iii++; iii<_data.size(); iii++) { for (iii++; iii<_data.size(); iii++) {
_filePos.check(_data[iii]); _filePos.check(_data[iii]);
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT #ifdef ENABLE_DISPLAY_PARSED_ELEMENT
drawElementParsed(_data[iii], _filePos); drawElementParsed(_data[iii], _filePos);
#endif #endif
if (false == checkString(_data[iii])) { if (false == checkString(_data[iii])) {
mode = parseMiddle; mode = parseMiddle;
@ -129,7 +131,8 @@ bool ejson::Object::iParse(const std::string& _data, size_t& _pos, ejson::filePo
tmpElement->iParse(_data, iii, _filePos, _doc); tmpElement->iParse(_data, iii, _filePos, _doc);
add(currentName, tmpElement); add(currentName, tmpElement);
currentName = ""; currentName = "";
} else if (_data[iii] == '"') { } else if ( _data[iii] == '"'
|| _data[iii] == '\'') {
// find a string: // find a string:
JSON_PARSE_ELEMENT("find String quoted"); JSON_PARSE_ELEMENT("find String quoted");
ejson::String * tmpElement = new ejson::String(); ejson::String * tmpElement = new ejson::String();

0
ejson/Object.h Executable file → Normal file
View File

View File

@ -20,6 +20,7 @@
bool ejson::String::iParse(const std::string& _data, size_t& _pos, ejson::filePos& _filePos, ejson::Document& _doc) { bool ejson::String::iParse(const std::string& _data, size_t& _pos, ejson::filePos& _filePos, ejson::Document& _doc) {
JSON_PARSE_ELEMENT("start parse : 'String' "); JSON_PARSE_ELEMENT("start parse : 'String' ");
char end = _data[_pos];
for (size_t iii=_pos+1; iii<_data.size(); iii++) { for (size_t iii=_pos+1; iii<_data.size(); iii++) {
_filePos.check(_data[iii]); _filePos.check(_data[iii]);
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT #ifdef ENABLE_DISPLAY_PARSED_ELEMENT
@ -27,7 +28,7 @@ bool ejson::String::iParse(const std::string& _data, size_t& _pos, ejson::filePo
#endif #endif
ejson::filePos tmpPos; ejson::filePos tmpPos;
// TODO : manage \x // TODO : manage \x
if( _data[iii]!= '\"') { if(_data[iii] != end) {
m_value += _data[iii]; m_value += _data[iii];
} else { } else {
_pos = iii; _pos = iii;

0
ejson/String.h Executable file → Normal file
View File

0
ejson/Value.h Executable file → Normal file
View File

0
ejson/ejson.h Executable file → Normal file
View File