Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • bias/configurators/yaml-configurator
1 result
Show changes
Commits on Source (3)
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 + "_"
......