diff --git a/src/Base/Tools.cpp b/src/Base/Tools.cpp index f3385132c5..0a360cc5bb 100644 --- a/src/Base/Tools.cpp +++ b/src/Base/Tools.cpp @@ -291,6 +291,30 @@ std::string Base::Tools::escapeEncodeFilename(const std::string& s) return result; } +std::string Base::Tools::quoted(const char* name) +{ + std::stringstream str; + str << "\"" << name << "\""; + return str.str(); +} + +std::string Base::Tools::quoted(const std::string& name) +{ + std::stringstream str; + str << "\"" << name << "\""; + return str.str(); +} + +std::string Base::Tools::joinList(const std::vector& vec, + const std::string& sep) +{ + std::stringstream str; + for (const auto& it : vec) { + str << it << sep; + } + return str.str(); +} + // ---------------------------------------------------------------------------- using namespace Base; diff --git a/src/Base/Tools.h b/src/Base/Tools.h index 93291e218b..76a67f9e98 100644 --- a/src/Base/Tools.h +++ b/src/Base/Tools.h @@ -274,6 +274,29 @@ struct BaseExport Tools static inline QString fromStdString(const std::string & s) { return QString::fromUtf8(s.c_str(), static_cast(s.size())); } + + /** + * @brief quoted Creates a quoted string. + * @param String to be quoted. + * @return A quoted std::string. + */ + static std::string quoted(const char*); + /** + * @brief quoted Creates a quoted string. + * @param String to be quoted. + * @return A quoted std::string. + */ + static std::string quoted(const std::string&); + + /** + * @brief joinList + * Join the vector of strings \a vec using the separator \a sep + * @param vec + * @param sep + * @return + */ + static std::string joinList(const std::vector& vec, + const std::string& sep = ", "); }; diff --git a/tests/src/Base/tst_Tools.cpp b/tests/src/Base/tst_Tools.cpp index 4f2fa6051d..033aff61d7 100644 --- a/tests/src/Base/tst_Tools.cpp +++ b/tests/src/Base/tst_Tools.cpp @@ -40,3 +40,13 @@ TEST(BaseToolsSuite, TestUniqueName8) { EXPECT_EQ(Base::Tools::getUniqueName("Body12345", {"Body"}, 3), "Body12346"); } + +TEST(BaseToolsSuite, TestQuote) +{ + EXPECT_EQ(Base::Tools::quoted("Test"), "\"Test\""); +} + +TEST(BaseToolsSuite, TestJoinList) +{ + EXPECT_EQ(Base::Tools::joinList({"AB", "CD"}), "AB, CD, "); +}