|
|
|
@ -142,26 +142,29 @@ namespace NLGUI
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ***************************************************************************
|
|
|
|
|
std::string CHtmlElement::htmlEscape(std::string val, bool isAttribute) const
|
|
|
|
|
std::string CHtmlElement::htmlEscape(const std::string &val) const
|
|
|
|
|
{
|
|
|
|
|
static const std::string searchReplace[] = {
|
|
|
|
|
"&", "&",
|
|
|
|
|
"<", "<",
|
|
|
|
|
">", ">",
|
|
|
|
|
"\xA0", " ",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for(uint i = 0; i < (sizeof(searchReplace) / sizeof(searchReplace[0])); i+=2)
|
|
|
|
|
val = strFindReplaceAll(val, searchReplace[i], searchReplace[i+1]);
|
|
|
|
|
|
|
|
|
|
if (isAttribute)
|
|
|
|
|
if (val.find_first_of("\"'&<>\xA0") == std::string::npos)
|
|
|
|
|
return val;
|
|
|
|
|
|
|
|
|
|
std::string ret;
|
|
|
|
|
// resize is quaranteed, make room for some free replacements
|
|
|
|
|
ret.reserve(val.size() + 24);
|
|
|
|
|
for(size_t pos = 0; pos != val.size(); pos++)
|
|
|
|
|
{
|
|
|
|
|
static const std::string q = "\"";
|
|
|
|
|
static const std::string quot = """;
|
|
|
|
|
val = strFindReplaceAll(val, q, quot);
|
|
|
|
|
switch(val[pos])
|
|
|
|
|
{
|
|
|
|
|
case '"': ret.append("""); break;
|
|
|
|
|
case '\'': ret.append("'"); break;
|
|
|
|
|
case '&': ret.append("&"); break;
|
|
|
|
|
case '<': ret.append("<"); break;
|
|
|
|
|
case '>': ret.append(">"); break;
|
|
|
|
|
case '\xA0': ret.append(" "); break;
|
|
|
|
|
default : ret.append(&val[pos],1); break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return val;
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ***************************************************************************
|
|
|
|
@ -179,13 +182,13 @@ namespace NLGUI
|
|
|
|
|
{
|
|
|
|
|
result += " ";
|
|
|
|
|
}
|
|
|
|
|
result += htmlEscape(*it2, true);
|
|
|
|
|
result += htmlEscape(*it2);
|
|
|
|
|
}
|
|
|
|
|
result += "\"";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result += " " + it->first + "=\"" + htmlEscape(it->second, true) + "\"";
|
|
|
|
|
result += " " + it->first + "=\"" + htmlEscape(it->second) + "\"";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|