mirror of
https://github.com/luanti-org/luanti.git
synced 2025-11-05 01:35:29 +01:00
Add core.strip_escapes() (#16485)
This commit is contained in:
@@ -592,27 +592,25 @@ inline std::basic_string<T> unescape_string(const std::basic_string<T> &s)
|
||||
*/
|
||||
template <typename T>
|
||||
[[nodiscard]]
|
||||
std::basic_string<T> unescape_enriched(const std::basic_string<T> &s)
|
||||
std::basic_string<T> unescape_enriched(std::basic_string_view<T> s)
|
||||
{
|
||||
std::basic_string<T> output;
|
||||
output.reserve(s.size());
|
||||
size_t i = 0;
|
||||
while (i < s.length()) {
|
||||
if (s[i] == '\x1b') {
|
||||
if (s[i] == static_cast<T>('\x1b')) {
|
||||
++i;
|
||||
if (i == s.length()) continue;
|
||||
if (s[i] == '(') {
|
||||
if (i == s.length())
|
||||
continue;
|
||||
if (s[i] == static_cast<T>('(')) {
|
||||
++i;
|
||||
while (i < s.length() && s[i] != ')') {
|
||||
if (s[i] == '\\') {
|
||||
while (i < s.length() && s[i] != static_cast<T>(')')) {
|
||||
if (s[i] == static_cast<T>('\\'))
|
||||
++i;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
++i;
|
||||
} else {
|
||||
++i;
|
||||
}
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
output += s[i];
|
||||
@@ -621,6 +619,18 @@ std::basic_string<T> unescape_enriched(const std::basic_string<T> &s)
|
||||
return output;
|
||||
}
|
||||
|
||||
// (same templating issue here)
|
||||
[[nodiscard]]
|
||||
inline std::string unescape_enriched(std::string_view s)
|
||||
{
|
||||
return unescape_enriched<char>(s);
|
||||
}
|
||||
[[nodiscard]]
|
||||
inline std::wstring unescape_enriched(std::wstring_view s)
|
||||
{
|
||||
return unescape_enriched<wchar_t>(s);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
[[nodiscard]]
|
||||
std::vector<std::basic_string<T> > split(const std::basic_string<T> &s, T delim)
|
||||
|
||||
Reference in New Issue
Block a user