From 3cd8554733dd9fb2ea7723d49a210b64ea49a946 Mon Sep 17 00:00:00 2001 From: pippotadde Date: Sat, 27 Dec 2025 19:08:48 +0100 Subject: [PATCH] Tools: Add kiwix::trim() helper and unit tests --- src/tools/stringTools.cpp | 11 ++++++++++- src/tools/stringTools.h | 2 ++ test/stringTools.cpp | 12 ++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/tools/stringTools.cpp b/src/tools/stringTools.cpp index 05ed6a19..e42209d3 100644 --- a/src/tools/stringTools.cpp +++ b/src/tools/stringTools.cpp @@ -29,7 +29,8 @@ #include #include - +#include +#include #include #include #include @@ -450,3 +451,11 @@ std::string kiwix::getSlugifiedFileName(const std::string& filename) #endif return std::regex_replace(filename, reservedCharsReg, "_"); } + +std::string kiwix::trim(const std::string& s) +{ + auto is_space = [](unsigned char c) { return std::isspace(c); }; + auto start = std::find_if_not(s.begin(), s.end(), is_space); + auto end = std::find_if_not(s.rbegin(), s.rend(), is_space).base(); + return (start < end) ? std::string(start, end) : std::string(); +} diff --git a/src/tools/stringTools.h b/src/tools/stringTools.h index 4ddbfd6b..7e0afa9c 100644 --- a/src/tools/stringTools.h +++ b/src/tools/stringTools.h @@ -60,6 +60,8 @@ std::string escapeForJSON(const std::string& s, bool escapeQuote = true); std::string urlEncode(const std::string& value); std::string urlDecode(const std::string& value, bool component = false); +std::string trim(const std::string& s); + std::string join(const std::vector& list, const std::string& sep); std::string ucAll(const std::string& word); diff --git a/test/stringTools.cpp b/test/stringTools.cpp index 19aba3b6..163d291e 100644 --- a/test/stringTools.cpp +++ b/test/stringTools.cpp @@ -184,4 +184,16 @@ TEST(stringTools, getSlugifiedFileName) #endif } +TEST(stringTools, Trim) +{ + EXPECT_EQ(kiwix::trim(""), ""); + EXPECT_EQ(kiwix::trim("abc123"), "abc123"); + EXPECT_EQ(kiwix::trim(" abc123"), "abc123"); + EXPECT_EQ(kiwix::trim("abc123 "), "abc123"); + EXPECT_EQ(kiwix::trim(" abc123 "), "abc123"); + EXPECT_EQ(kiwix::trim("abc 123"), "abc 123"); + EXPECT_EQ(kiwix::trim(" "), ""); + EXPECT_EQ(kiwix::trim("\t abc123 \n"), "abc123"); +} + };