aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-03-08 22:33:28 -0800
committerAlexander Karatarakis <alkarata@microsoft.com>2017-03-10 16:21:17 -0800
commit07e43a7cae217f91808402020e19da2147f5d72b (patch)
treebb52daf2b13b4d159838a1756a4ce8bdf0907f45 /toolsrc/include
parent4d0abd5841b9639c20126a5a25e2b0d4a9eb98d2 (diff)
downloadvcpkg-07e43a7cae217f91808402020e19da2147f5d72b.tar.gz
vcpkg-07e43a7cae217f91808402020e19da2147f5d72b.zip
Nuke Joiner. Add wjoin()
Diffstat (limited to 'toolsrc/include')
-rw-r--r--toolsrc/include/vcpkg_Strings.h37
1 files changed, 18 insertions, 19 deletions
diff --git a/toolsrc/include/vcpkg_Strings.h b/toolsrc/include/vcpkg_Strings.h
index 5b536e5e1..abf3651e5 100644
--- a/toolsrc/include/vcpkg_Strings.h
+++ b/toolsrc/include/vcpkg_Strings.h
@@ -74,7 +74,7 @@ namespace vcpkg::Strings
std::string ascii_to_lowercase(const std::string& input);
template <class T, class Transformer>
- static std::string join(const std::vector<T>& v, const std::string& prefix, const std::string& delimiter, const std::string& suffix, Transformer transformer)
+ std::string join(const std::string& delimiter, const std::vector<T>& v, Transformer transformer)
{
if (v.empty())
{
@@ -84,7 +84,6 @@ namespace vcpkg::Strings
std::string output;
size_t size = v.size();
- output.append(prefix);
output.append(transformer(v.at(0)));
for (size_t i = 1; i < size; ++i)
@@ -93,35 +92,35 @@ namespace vcpkg::Strings
output.append(transformer(v.at(i)));
}
- output.append(suffix);
return output;
}
- static std::string join(const std::vector<std::string>& v, const std::string& prefix, const std::string& delimiter, const std::string& suffix);
+ std::string join(const std::string& delimiter, const std::vector<std::string>& v);
- class Joiner
+ template <class T, class Transformer>
+ std::wstring wjoin(const std::wstring& delimiter, const std::vector<T>& v, Transformer transformer)
{
- public:
- static Joiner on(const std::string& delimiter);
+ if (v.empty())
+ {
+ return std::wstring();
+ }
- Joiner& prefix(const std::string& prefix);
- Joiner& suffix(const std::string& suffix);
+ std::wstring output;
+ size_t size = v.size();
- std::string join(const std::vector<std::string>& v) const;
+ output.append(transformer(v.at(0)));
- template <class T, class Transformer>
- std::string join(const std::vector<T>& v, Transformer transformer) const
+ for (size_t i = 1; i < size; ++i)
{
- return Strings::join(v, this->m_prefix, this->m_delimiter, this->m_suffix, transformer);
+ output.append(delimiter);
+ output.append(transformer(v.at(i)));
}
- private:
- explicit Joiner(const std::string& delimiter);
+ return output;
+ }
+
+ std::wstring wjoin(const std::wstring& delimiter, const std::vector<std::wstring>& v);
- std::string m_prefix;
- std::string m_delimiter;
- std::string m_suffix;
- };
void trim(std::string* s);