aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjansenin <jansenin@yandex-team.com>2023-08-14 13:14:44 +0300
committerjansenin <jansenin@yandex-team.com>2023-08-14 14:28:19 +0300
commitfebf300349ed585aa250bef06bfbdb91597a08bd (patch)
tree5fe536e237be44ffd8af8808d3afbd0f24a7e23a
parent400f29bde4ceb79c8120bbc57dff1725c5fa7c80 (diff)
downloadydb-febf300349ed585aa250bef06bfbdb91597a08bd.tar.gz
add Map.Has(TString)
-rw-r--r--library/cpp/yaml/fyamlcpp/fyamlcpp.cpp4
-rw-r--r--library/cpp/yaml/fyamlcpp/fyamlcpp.h2
-rw-r--r--library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp2
3 files changed, 8 insertions, 0 deletions
diff --git a/library/cpp/yaml/fyamlcpp/fyamlcpp.cpp b/library/cpp/yaml/fyamlcpp/fyamlcpp.cpp
index 37ead18350..d990d056e3 100644
--- a/library/cpp/yaml/fyamlcpp/fyamlcpp.cpp
+++ b/library/cpp/yaml/fyamlcpp/fyamlcpp.cpp
@@ -417,6 +417,10 @@ void TMapping::Remove(const TNodePairRef& toRemove) {
free(toRemove.Pair_);
}
+bool TMapping::Has(TString key) {
+ return fy_node_mapping_lookup_by_string(Node_, key.data(), key.size()) != nullptr;
+}
+
TMappingIterator TMapping::Remove(const TMappingIterator& toRemove) {
ENSURE_NODE_NOT_EMPTY(Node_);
Y_VERIFY_DEBUG(Node_ == toRemove.Node_);
diff --git a/library/cpp/yaml/fyamlcpp/fyamlcpp.h b/library/cpp/yaml/fyamlcpp/fyamlcpp.h
index cb622bd146..72936b44bc 100644
--- a/library/cpp/yaml/fyamlcpp/fyamlcpp.h
+++ b/library/cpp/yaml/fyamlcpp/fyamlcpp.h
@@ -487,6 +487,8 @@ public:
void Remove(const TNodePairRef& toRemove);
+ bool Has(TString key);
+
TMappingIterator Remove(const TMappingIterator& toRemove);
void Remove(const TNodeRef& key);
diff --git a/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp b/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp
index 041a7028b3..493aaab136 100644
--- a/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp
+++ b/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp
@@ -170,6 +170,8 @@ x: b
}
auto seq = doc->Root().Map().at("test").Sequence();
+ UNIT_ASSERT(seq[0].Map().Has("x"));
+ UNIT_ASSERT(!seq[0].Map().Has("xx"));
UNIT_ASSERT_VALUES_EQUAL(seq[0].Map().at("x").Scalar(), "1");
UNIT_ASSERT_VALUES_EQUAL(seq[0].Map().at("y").Scalar(), "2");
UNIT_ASSERT_VALUES_EQUAL(seq[1].Map().at("a").Scalar(), "noop");