[DEV] add api of sending \" element in string

This commit is contained in:
Edouard DUPIN 2016-05-27 21:57:01 +02:00
parent 3ac477a1df
commit 1f7a39741e

View File

@ -31,20 +31,36 @@ const std::string& ejson::internal::String::get() const {
bool ejson::internal::String::iParse(const std::string& _data, size_t& _pos, ejson::FilePos& _filePos, ejson::internal::Document& _doc) {
EJSON_PARSE_ELEMENT("start parse : 'String' ");
char end = _data[_pos];
bool backslashPrevious = false;
for (size_t iii=_pos+1; iii<_data.size(); iii++) {
_filePos.check(_data[iii]);
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT
drawElementParsed(_data[iii], _filePos);
#endif
ejson::FilePos tmpPos;
// TODO : manage \x
if(_data[iii] != end) {
if(_data[iii] == '\\') {
if (backslashPrevious == true) {
m_value += '\\';
backslashPrevious = false;
} else {
backslashPrevious = true;
}
} else if (_data[iii] != end) {
if (backslashPrevious == true) {
m_value += '\\';
backslashPrevious = false;
}
m_value += _data[iii];
} else {
if (backslashPrevious == true) {
m_value += '"';
backslashPrevious = false;
} else {
_pos = iii;
return true;
}
}
}
_pos=_data.size();
EJSON_CREATE_ERROR(_doc, _data, _pos, _filePos, "get end of string whithout fincding end of quote");
return false;
@ -52,17 +68,27 @@ bool ejson::internal::String::iParse(const std::string& _data, size_t& _pos, ejs
bool ejson::internal::String::iGenerate(std::string& _data, size_t _indent) const {
_data += "\"";;
// TODO : Manage the \" elements ....
_data += m_value;
_data += "\"";;
_data += "\"";
for (auto &it: m_value) {
if ( it == '\\'
|| it == '"') {
_data += '\\';
}
_data += it;
}
_data += "\"";
return true;
}
void ejson::internal::String::iMachineGenerate(std::string& _data) const {
_data += "\"";;
// TODO : Manage the \" elements ....
_data += m_value;
_data += "\"";;
_data += "\"";
for (auto &it: m_value) {
if ( it == '\\'
|| it == '"') {
_data += '\\';
}
_data += it;
}
_data += "\"";
}
bool ejson::internal::String::transfertIn(ememory::SharedPtr<ejson::internal::Value> _obj) {