summaryrefslogtreecommitdiff
path: root/Source/Core/Common/StringUtil.cpp
diff options
context:
space:
mode:
authorFiloppi <filippotarpini@hotmail.it>2021-05-11 16:30:29 +0300
committerFiloppi <filippotarpini@hotmail.it>2021-05-12 18:25:56 +0300
commit574477866fe3e82a87214848d3d4b505535f2d3b (patch)
treeec9a72016dbc420cd200ad7c8c2a9bb571eefc4f /Source/Core/Common/StringUtil.cpp
parenteb5cd9be78c76b9ccbab9e5fbd1721ef6876cd68 (diff)
InputCommon: fix serialization of control expression with line breaks
The control expression editor allows line breaks, but the serialization was losing anything after the first line break (/r /n). Instead of opting to encode them and decode them on serialization (which I tried but was not safe, as it would lose /n written in the string by users), I opted to replace them with a space.
Diffstat (limited to 'Source/Core/Common/StringUtil.cpp')
-rw-r--r--Source/Core/Common/StringUtil.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/Source/Core/Common/StringUtil.cpp b/Source/Core/Common/StringUtil.cpp
index ffda64c79f..9c57bf944a 100644
--- a/Source/Core/Common/StringUtil.cpp
+++ b/Source/Core/Common/StringUtil.cpp
@@ -219,7 +219,7 @@ std::string ArrayToString(const u8* data, u32 size, int line_len, bool spaces)
return oss.str();
}
-// Turns " hello " into "hello". Also handles tabs.
+// Turns "\n\r\t hello " into "hello" (trims at the start and end but not inside).
std::string_view StripSpaces(std::string_view str)
{
const size_t s = str.find_first_not_of(" \t\r\n");
@@ -241,6 +241,13 @@ std::string_view StripQuotes(std::string_view s)
return s;
}
+// Turns "\n\rhello" into " hello".
+void ReplaceBreaksWithSpaces(std::string& str)
+{
+ std::replace(str.begin(), str.end(), '\r', ' ');
+ std::replace(str.begin(), str.end(), '\n', ' ');
+}
+
bool TryParse(const std::string& str, bool* const output)
{
float value;