From 2f48bbf6ff0c2bad4d06ce1189cd8e0e50d7a447 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Thu, 7 Dec 2017 01:56:02 +0800 Subject: [PATCH] Tweak unescape template function to unescape the escape char as well Test that more thouroughly in the unit tests. --- src/string_utils.cc | 4 ++-- src/string_utils.hh | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/string_utils.cc b/src/string_utils.cc index 55c7562e..628bff32 100644 --- a/src/string_utils.cc +++ b/src/string_utils.cc @@ -351,8 +351,8 @@ UnitTest test_string{[]() kak_assert(wrapped2[1] == "unknown"); kak_assert(wrapped2[2] == "type"); - kak_assert(escape("youpi:matin:tchou:", ':', '\\') == "youpi\\:matin\\:tchou\\:"); - kak_assert(unescape("youpi\\:matin\\:tchou\\:", ':', '\\') == "youpi:matin:tchou:"); + kak_assert(escape(R"(\youpi:matin:tchou\:)", ":\\", '\\') == R"(\\youpi\:matin\:tchou\\\:)"); + kak_assert(unescape(R"(\\youpi\:matin\:tchou\\\:)", ":\\", '\\') == R"(\youpi:matin:tchou\:)"); kak_assert(prefix_match("tchou kanaky", "tchou")); kak_assert(prefix_match("tchou kanaky", "tchou kanaky")); diff --git a/src/string_utils.hh b/src/string_utils.hh index f1796f7c..e8442fc2 100644 --- a/src/string_utils.hh +++ b/src/string_utils.hh @@ -14,7 +14,11 @@ String escape(StringView str, StringView characters, char escape); String unescape(StringView str, StringView characters, char escape); template -String unescape(StringView str) { return unescape(str, character, escape); } +String unescape(StringView str) +{ + const char to_escape[2] = { character, escape }; + return unescape(str, {to_escape, 2}, escape); +} String indent(StringView str, StringView indent = " ");