Skip to content
Commits on Source (4)
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 + "_"
......