Integrate DataQuery
Change-Id: I439374afe485baf08a4d5a1a02fd70d908bec9e1
diff --git a/src/ast_handlers.cpp b/src/ast_handlers.cpp
index ca5fe25..8aa6470 100644
--- a/src/ast_handlers.cpp
+++ b/src/ast_handlers.cpp
@@ -1,10 +1,13 @@
#include "ast_handlers.hpp"
-std::set<std::string> generateMissingKeyCompletionSet(std::set<std::string> keysNeeded, std::set<std::string> currentSet)
+std::set<std::string> generateMissingKeyCompletionSet(std::set<std::string> keysNeeded, std::map<std::string, leaf_data_> currentKeys)
{
std::set<std::string> missingKeys;
- std::set_difference(keysNeeded.begin(), keysNeeded.end(),
- currentSet.begin(), currentSet.end(),
- std::inserter(missingKeys, missingKeys.end()));
+
+ for (const auto& key : keysNeeded) {
+ if (currentKeys.find(key) == currentKeys.end()) {
+ missingKeys.insert(key);
+ }
+ }
std::set<std::string> res;
@@ -13,3 +16,12 @@
[] (auto it) { return it + "="; });
return res;
}
+
+std::string leafDataToCompletion(const leaf_data_& value)
+{
+ // Only string-like values need to be quoted
+ if (value.type() == typeid(std::string)) {
+ return escapeListKeyString(leafDataToString(value));
+ }
+ return leafDataToString(value);
+}