From a40c05ec6bf9db4d0917f19b5cca0f98310e7a52 Mon Sep 17 00:00:00 2001 From: emeric Date: Mon, 23 Mar 2020 18:06:39 +0100 Subject: [PATCH] Always storing MBID in lowercase to avoid silly duplicates --- src/libs/utils/impl/String.cpp | 16 +++++++++++++--- src/libs/utils/impl/UUID.cpp | 6 ++++++ src/libs/utils/include/utils/String.hpp | 3 ++- src/libs/utils/include/utils/UUID.hpp | 2 +- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/impl/String.cpp b/src/libs/utils/impl/String.cpp index be6a79a1..1b181325 100644 --- a/src/libs/utils/impl/String.cpp +++ b/src/libs/utils/impl/String.cpp @@ -98,15 +98,25 @@ stringTrimEnd(const std::string& str, const std::string& whitespace) } std::string -stringToLower(const std::string& str) +stringToLower(std::string_view str) { - return boost::algorithm::to_lower_copy(str); + std::string res; + res.reserve(str.size()); + + std::transform(std::cbegin(str), std::cend(str), std::back_inserter(res), [](char c) { return std::tolower(c);}); + + return res; } std::string stringToUpper(const std::string& str) { - return boost::to_upper_copy(str); + std::string res; + res.reserve(str.size()); + + std::transform(std::cbegin(str), std::cend(str), std::back_inserter(res), [](char c) { return std::toupper(c);}); + + return res; } std::string diff --git a/src/libs/utils/impl/UUID.cpp b/src/libs/utils/impl/UUID.cpp index f95209e2..6b9b402a 100644 --- a/src/libs/utils/impl/UUID.cpp +++ b/src/libs/utils/impl/UUID.cpp @@ -21,6 +21,8 @@ #include +#include "utils/String.hpp" + namespace StringUtils { template <> @@ -40,6 +42,10 @@ stringIsUUID(std::string_view str) return std::regex_match(std::cbegin(str), std::cend(str), re); } +UUID::UUID(std::string_view str) + : _value {StringUtils::stringToLower(str)} +{ +} std::optional UUID::fromString(std::string_view str) diff --git a/src/libs/utils/include/utils/String.hpp b/src/libs/utils/include/utils/String.hpp index e62edb91..62d6fba4 100644 --- a/src/libs/utils/include/utils/String.hpp +++ b/src/libs/utils/include/utils/String.hpp @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -40,7 +41,7 @@ std::string stringTrimEnd(const std::string& str, const std::string& whitespaces = " \t"); std::string -stringToLower(const std::string& str); +stringToLower(std::string_view str); std::string stringToUpper(const std::string& str); diff --git a/src/libs/utils/include/utils/UUID.hpp b/src/libs/utils/include/utils/UUID.hpp index daf561d0..38814d1f 100644 --- a/src/libs/utils/include/utils/UUID.hpp +++ b/src/libs/utils/include/utils/UUID.hpp @@ -34,7 +34,7 @@ class UUID std::string_view getAsString() const { return _value; } private: - UUID(std::string_view value) : _value {value} {} + UUID(std::string_view value); std::string _value; };