aboutsummaryrefslogtreecommitdiff
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
parent4d0abd5841b9639c20126a5a25e2b0d4a9eb98d2 (diff)
downloadvcpkg-07e43a7cae217f91808402020e19da2147f5d72b.tar.gz
vcpkg-07e43a7cae217f91808402020e19da2147f5d72b.zip
Nuke Joiner. Add wjoin()
-rw-r--r--toolsrc/include/vcpkg_Strings.h37
-rw-r--r--toolsrc/src/SourceParagraph.cpp4
-rw-r--r--toolsrc/src/commands_install.cpp2
-rw-r--r--toolsrc/src/commands_remove.cpp10
-rw-r--r--toolsrc/src/vcpkg_Strings.cpp32
5 files changed, 30 insertions, 55 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);
diff --git a/toolsrc/src/SourceParagraph.cpp b/toolsrc/src/SourceParagraph.cpp
index 8bfe8e84d..4d144191f 100644
--- a/toolsrc/src/SourceParagraph.cpp
+++ b/toolsrc/src/SourceParagraph.cpp
@@ -53,8 +53,8 @@ namespace vcpkg
const std::vector<std::string> remaining_fields = Maps::extract_keys(fields);
const std::vector<std::string>& valid_fields = get_list_of_valid_fields();
- const std::string remaining_fields_as_string = Strings::Joiner::on("\n ").join(remaining_fields);
- const std::string valid_fields_as_string = Strings::Joiner::on("\n ").join(valid_fields);
+ const std::string remaining_fields_as_string = Strings::join("\n ", remaining_fields);
+ const std::string valid_fields_as_string = Strings::join("\n ", valid_fields);
System::println(System::color::error, "Error: There are invalid fields in the Source Paragraph of %s", this->name);
System::println("The following fields were not expected:\n\n %s\n\n", remaining_fields_as_string);
diff --git a/toolsrc/src/commands_install.cpp b/toolsrc/src/commands_install.cpp
index 24fa5edc0..ad341c847 100644
--- a/toolsrc/src/commands_install.cpp
+++ b/toolsrc/src/commands_install.cpp
@@ -158,7 +158,7 @@ namespace vcpkg::Commands::Install
triplet_install_path.generic_string(),
binary_paragraph.spec);
System::print("\n ");
- System::println(Strings::Joiner::on("\n ").join(intersection));
+ System::println(Strings::join("\n ", intersection));
System::println("");
exit(EXIT_FAILURE);
}
diff --git a/toolsrc/src/commands_remove.cpp b/toolsrc/src/commands_remove.cpp
index 1daacb944..1b7b7923a 100644
--- a/toolsrc/src/commands_remove.cpp
+++ b/toolsrc/src/commands_remove.cpp
@@ -136,17 +136,17 @@ namespace vcpkg::Commands::Remove
{
sort_packages_by_name(&not_installed);
System::println("The following packages are not installed, so not removed:\n%s",
- Strings::Joiner::on("\n ").prefix(" ").join(not_installed, [](const package_spec_with_remove_plan* p)
- {
- return p->spec.toString();
- }));
+ Strings::join("\n ", not_installed, [](const package_spec_with_remove_plan* p)
+ {
+ return " " + p->spec.toString();
+ }));
}
if (!remove.empty())
{
sort_packages_by_name(&remove);
System::println("The following packages will be removed:\n%s",
- Strings::Joiner::on("\n").join(remove, [](const package_spec_with_remove_plan* p)
+ Strings::join("\n", remove, [](const package_spec_with_remove_plan* p)
{
if (p->plan.request_type == Dependencies::request_type::AUTO_SELECTED)
{
diff --git a/toolsrc/src/vcpkg_Strings.cpp b/toolsrc/src/vcpkg_Strings.cpp
index a7805f211..044fd3c05 100644
--- a/toolsrc/src/vcpkg_Strings.cpp
+++ b/toolsrc/src/vcpkg_Strings.cpp
@@ -78,38 +78,14 @@ namespace vcpkg::Strings
return output;
}
- 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)
{
- return join(v, prefix, delimiter, suffix, [](const std::string& i) -> std::string
- {
- return i;
- });
- }
-
- Joiner Joiner::on(const std::string& delimiter)
- {
- return Joiner(delimiter);
- }
-
- Joiner& Joiner::prefix(const std::string& prefix)
- {
- this->m_prefix = prefix;
- return *this;
- }
-
- Joiner& Joiner::suffix(const std::string& suffix)
- {
- this->m_suffix = suffix;
- return *this;
- }
-
- std::string Joiner::join(const std::vector<std::string>& v) const
- {
- return Strings::join(v, this->m_prefix, this->m_delimiter, this->m_suffix);
+ return join(delimiter, v, [](const std::string& p) -> const std::string& { return p; });
}
- Joiner::Joiner(const std::string& delimiter) : m_prefix(""), m_delimiter(delimiter), m_suffix("")
+ std::wstring wjoin(const std::wstring& delimiter, const std::vector<std::wstring>& v)
{
+ return wjoin(delimiter, v, [](const std::wstring& p) -> const std::wstring&{ return p; });
}
void trim(std::string* s)