Don't put quotes around simple strings when serializing strings

0.8
Bruno Van de Velde 2019-03-23 22:54:37 +01:00
parent 416994f93c
commit f66f8a5e45
2 changed files with 15 additions and 1 deletions

View File

@ -118,6 +118,18 @@ namespace tgui
{
std::string result = value.getString();
bool encodingRequired = false;
if (result.empty())
encodingRequired = true;
for (const char c : result)
{
if ((c != '%') && (c != '/') && (c != '_') && (c != '@') && ((c < '0') || (c > '9')) && ((c < 'A') || (c > 'Z')) && ((c < 'a') || (c > 'z')))
encodingRequired = true;
}
if (!encodingRequired)
return result;
auto replace = [&](char from, char to)
{
std::size_t pos = 0;

View File

@ -91,7 +91,9 @@ TEST_CASE("[Serializer]")
SECTION("serialize string")
{
REQUIRE(tgui::Serializer::serialize(sf::String{""}) == "\"\"");
REQUIRE(tgui::Serializer::serialize(sf::String{"Just a string."}) == "\"Just a string.\"");
REQUIRE(tgui::Serializer::serialize(sf::String{"word"}) == "word");
REQUIRE(tgui::Serializer::serialize(sf::String{"No/Quotes_Required@089%"}) == "No/Quotes_Required@089%");
REQUIRE(tgui::Serializer::serialize(sf::String{"String with spaces"}) == "\"String with spaces\"");
REQUIRE(tgui::Serializer::serialize(sf::String{"\\"}) == "\"\\\\\"");
REQUIRE(tgui::Serializer::serialize(sf::String{"\n"}) == "\"\\n\"");
REQUIRE(tgui::Serializer::serialize(sf::String{"\t"}) == "\"\\t\"");