Skip to content
Snippets Groups Projects
Commit db865654 authored by Valerio Pastore's avatar Valerio Pastore
Browse files

Merge branch 'dev' into 'main'

Dev

See merge request !2
parents 8176ab67 619b1197
No related branches found
No related tags found
1 merge request!2Dev
Subproject commit 8a0ea2d0e699863df5fe1c91caf2d7b0855957be
Subproject commit a00f9a27afbf5f75dab7db2368b9b9b6fcb395e1
......@@ -6,6 +6,10 @@
namespace inaf::oasbo::Configurators {
/**
* @brief The YamlConfigurator class is a subclass of BaseConfigurator that provides functionality for reading and writing YAML configuration files.
* It inherits from the BaseConfigurator class. Check Base_Configurator.h for more information.
*/
class YamlConfigurator: public BaseConfigurator {
protected:
YAML::Node file;
......@@ -13,13 +17,22 @@ protected:
public:
std::string path;
/**
* @brief Constructs a YamlConfigurator object with the specified path to the YAML configuration file.
* @param path The path to the YAML configuration file.
*/
YamlConfigurator(std::string path);
int readConfigFromSource() override;
int readConfigFromSource(std::string target) override;
int pushConfigToSource() override;
int pushConfigToSource(std::string target) override;
int insert(std::map<std::string, std::string>, std::string target) override;
int insert(std::map<std::string, std::string>, std::string target) override;
};
}
......@@ -39,8 +39,7 @@ void YamlConfigurator::load(std::string path) {
}
/**
Updates the YAML configuration file by adding new configuration entries for the target key.
@brief Updates the YAML configuration file by adding new configuration entries for the target key.
It also removes old configurations corresponding to the target key.
@param target The target key for which to add and remove configuration entries.
*/
......@@ -84,11 +83,11 @@ int YamlConfigurator::pushConfigToSource(std::string target) {
for (; pos < file_content.size(); pos++) {
if (file_content[pos][0] != '-') {
line = file_content[pos];
// Elimina gli spazi vuoti all'inizio della stringa e Ferma l'analisi al carattere ":" escluso
// Remove leading whitespace from the string and stop analysis at the ":" character (excluding it)
line = line.erase(0, line.find_first_not_of(' ')).substr(0,
line.find(':'));
boost::to_lower(line);
bool found = false; // Controlla se la riga è stata sostituita dalla nuova conf
bool found = false; // Checks if the line has been replaced by the new configuration
for (auto key : filteredMap) {
if (key.first.compare(line) == 0) {
found = true;
......@@ -164,12 +163,27 @@ int YamlConfigurator::readConfigFromSource() {
if (file.IsNull())
return -1;
try {
// Itera sugli elementi del documento YAML
// Iterate over the elements of the YAML document
for (const auto &element : file) {
for (const auto &pair : element) {
std::string elementName = element.first.as<std::string>();
boost::to_lower(elementName);
// If the element is a map, extract the keys and values
if (pair.second.IsMap()) {
for (const auto &subPair : pair.second) {
std::string key = elementName + "_"
+ subPair.first.as<std::string>();
std::string value = subPair.second.as<std::string>();
config[key] = value;
}
}
}
}
for (const auto &element : file) {
for (const auto &pair : element) {
std::string elementName = element.first.as<std::string>();
boost::to_lower(elementName);
// Se l'elemento è una mappa, estrai le chiavi e i valori
// If the element is a map, extract the keys and values
if (pair.second.IsMap()) {
for (const auto &subPair : pair.second) {
std::string key = elementName + "_"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment