aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkglib_helpers.cpp
diff options
context:
space:
mode:
authorJan HrubĂ˝ <jhruby.web@gmail.com>2017-03-13 08:56:05 +0100
committerGitHub <noreply@github.com>2017-03-13 08:56:05 +0100
commit665f4118f603c5858217ed7a2f2f824b18ff4fc5 (patch)
treef0167041edf71e90f2331b5025f603392a8de67a /toolsrc/src/vcpkglib_helpers.cpp
parent1bec0fcb73073b5b1719f454c368a63f1bff625e (diff)
parent1c9873a0daf625f67474aaf3e163c592c27ecb65 (diff)
downloadvcpkg-665f4118f603c5858217ed7a2f2f824b18ff4fc5.tar.gz
vcpkg-665f4118f603c5858217ed7a2f2f824b18ff4fc5.zip
Merge pull request #1 from Microsoft/master
pull
Diffstat (limited to 'toolsrc/src/vcpkglib_helpers.cpp')
-rw-r--r--toolsrc/src/vcpkglib_helpers.cpp69
1 files changed, 37 insertions, 32 deletions
diff --git a/toolsrc/src/vcpkglib_helpers.cpp b/toolsrc/src/vcpkglib_helpers.cpp
index e947dc647..6b96c25cb 100644
--- a/toolsrc/src/vcpkglib_helpers.cpp
+++ b/toolsrc/src/vcpkglib_helpers.cpp
@@ -1,50 +1,55 @@
+#include "pch.h"
#include "vcpkg_Checks.h"
#include "vcpkglib_helpers.h"
-#include <unordered_map>
-namespace vcpkg {namespace details
+namespace vcpkg::details
{
- void optional_field(const std::unordered_map<std::string, std::string>& fields, std::string& out, const std::string& fieldname)
+ std::string optional_field(const std::unordered_map<std::string, std::string>& fields, const std::string& fieldname)
{
auto it = fields.find(fieldname);
if (it == fields.end())
{
- out.clear();
+ return std::string();
}
- else
+ return it->second;
+ }
+
+ std::string remove_optional_field(std::unordered_map<std::string, std::string>* fields, const std::string& fieldname)
+ {
+ auto it = fields->find(fieldname);
+ if (it == fields->end())
{
- out = it->second;
+ return std::string();
}
- };
- void required_field(const std::unordered_map<std::string, std::string>& fields, std::string& out, const std::string& fieldname)
+ const std::string value = std::move(it->second);
+ fields->erase(it);
+ return value;
+ }
+
+ std::string required_field(const std::unordered_map<std::string, std::string>& fields, const std::string& fieldname)
{
auto it = fields.find(fieldname);
- vcpkg::Checks::check_throw(it != fields.end(), "Required field not present: %s", fieldname);
- out = it->second;
- };
+ Checks::check_exit(it != fields.end(), "Required field not present: %s", fieldname);
+ return it->second;
+ }
- void parse_depends(const std::string& depends_string, std::vector<std::string>& out)
+ std::string remove_required_field(std::unordered_map<std::string, std::string>* fields, const std::string& fieldname)
{
- size_t cur = 0;
- do
- {
- auto pos = depends_string.find(',', cur);
- if (pos == std::string::npos)
- {
- out.push_back(depends_string.substr(cur));
- return;
- }
- out.push_back(depends_string.substr(cur, pos - cur));
-
- // skip comma and space
- ++pos;
- if (depends_string[pos] == ' ')
- ++pos;
-
- cur = pos;
- }
- while (cur != std::string::npos);
+ auto it = fields->find(fieldname);
+ Checks::check_exit(it != fields->end(), "Required field not present: %s", fieldname);
+
+ const std::string value = std::move(it->second);
+ fields->erase(it);
+ return value;
+ }
+
+ std::string shorten_description(const std::string& desc)
+ {
+ auto simple_desc = std::regex_replace(desc.substr(0, 49), std::regex("\\n( |\\t)?"), "");
+ if (desc.size() > 49)
+ simple_desc.append("...");
+ return simple_desc;
}
-}}
+}