diff options
author | bnagaev <bnagaev@yandex-team.ru> | 2022-02-10 16:47:04 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:04 +0300 |
commit | d6449ba66291ff0c0d352c82e6eb3efb4c8a7e8d (patch) | |
tree | d5dca6d44593f5e52556a1cc7b1ab0386e096ebe /contrib/libs/yaml-cpp/src/convert.cpp | |
parent | 1861d4c1402bb2c67a3e6b43b51706081b74508a (diff) | |
download | ydb-d6449ba66291ff0c0d352c82e6eb3efb4c8a7e8d.tar.gz |
Restoring authorship annotation for <bnagaev@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/yaml-cpp/src/convert.cpp')
-rw-r--r-- | contrib/libs/yaml-cpp/src/convert.cpp | 150 |
1 files changed, 75 insertions, 75 deletions
diff --git a/contrib/libs/yaml-cpp/src/convert.cpp b/contrib/libs/yaml-cpp/src/convert.cpp index ec05b77826..b7e9d7f7f4 100644 --- a/contrib/libs/yaml-cpp/src/convert.cpp +++ b/contrib/libs/yaml-cpp/src/convert.cpp @@ -1,75 +1,75 @@ -#include <algorithm> - -#include "yaml-cpp/node/convert.h" - -namespace { -// we're not gonna mess with the mess that is all the isupper/etc. functions -bool IsLower(char ch) { return 'a' <= ch && ch <= 'z'; } -bool IsUpper(char ch) { return 'A' <= ch && ch <= 'Z'; } -char ToLower(char ch) { return IsUpper(ch) ? ch + 'a' - 'A' : ch; } - -std::string tolower(const std::string& str) { - std::string s(str); - std::transform(s.begin(), s.end(), s.begin(), ToLower); - return s; -} - -template <typename T> -bool IsEntirely(const std::string& str, T func) { - for (std::size_t i = 0; i < str.size(); i++) - if (!func(str[i])) - return false; - - return true; -} - -// IsFlexibleCase -// . Returns true if 'str' is: -// . UPPERCASE -// . lowercase -// . Capitalized -bool IsFlexibleCase(const std::string& str) { - if (str.empty()) - return true; - - if (IsEntirely(str, IsLower)) - return true; - - bool firstcaps = IsUpper(str[0]); - std::string rest = str.substr(1); - return firstcaps && (IsEntirely(rest, IsLower) || IsEntirely(rest, IsUpper)); -} -} - -namespace YAML { -bool convert<bool>::decode(const Node& node, bool& rhs) { - if (!node.IsScalar()) - return false; - - // we can't use iostream bool extraction operators as they don't - // recognize all possible values in the table below (taken from - // http://yaml.org/type/bool.html) - static const struct { - std::string truename, falsename; - } names[] = { - {"y", "n"}, {"yes", "no"}, {"true", "false"}, {"on", "off"}, - }; - - if (!IsFlexibleCase(node.Scalar())) - return false; - - for (unsigned i = 0; i < sizeof(names) / sizeof(names[0]); i++) { - if (names[i].truename == tolower(node.Scalar())) { - rhs = true; - return true; - } - - if (names[i].falsename == tolower(node.Scalar())) { - rhs = false; - return true; - } - } - - return false; -} -} +#include <algorithm> + +#include "yaml-cpp/node/convert.h" + +namespace { +// we're not gonna mess with the mess that is all the isupper/etc. functions +bool IsLower(char ch) { return 'a' <= ch && ch <= 'z'; } +bool IsUpper(char ch) { return 'A' <= ch && ch <= 'Z'; } +char ToLower(char ch) { return IsUpper(ch) ? ch + 'a' - 'A' : ch; } + +std::string tolower(const std::string& str) { + std::string s(str); + std::transform(s.begin(), s.end(), s.begin(), ToLower); + return s; +} + +template <typename T> +bool IsEntirely(const std::string& str, T func) { + for (std::size_t i = 0; i < str.size(); i++) + if (!func(str[i])) + return false; + + return true; +} + +// IsFlexibleCase +// . Returns true if 'str' is: +// . UPPERCASE +// . lowercase +// . Capitalized +bool IsFlexibleCase(const std::string& str) { + if (str.empty()) + return true; + + if (IsEntirely(str, IsLower)) + return true; + + bool firstcaps = IsUpper(str[0]); + std::string rest = str.substr(1); + return firstcaps && (IsEntirely(rest, IsLower) || IsEntirely(rest, IsUpper)); +} +} + +namespace YAML { +bool convert<bool>::decode(const Node& node, bool& rhs) { + if (!node.IsScalar()) + return false; + + // we can't use iostream bool extraction operators as they don't + // recognize all possible values in the table below (taken from + // http://yaml.org/type/bool.html) + static const struct { + std::string truename, falsename; + } names[] = { + {"y", "n"}, {"yes", "no"}, {"true", "false"}, {"on", "off"}, + }; + + if (!IsFlexibleCase(node.Scalar())) + return false; + + for (unsigned i = 0; i < sizeof(names) / sizeof(names[0]); i++) { + if (names[i].truename == tolower(node.Scalar())) { + rhs = true; + return true; + } + + if (names[i].falsename == tolower(node.Scalar())) { + rhs = false; + return true; + } + } + + return false; +} +} |