~singpolyma/biboumi

a429b2ea271158fcda8a2f7a5b0179686bab3aa2 — Emmanuel Gil Peyrot 4 years ago 39a32d5
Add a Config::is_in_list() method
2 files changed, 19 insertions(+), 3 deletions(-)

M src/config/config.cpp
M src/config/config.hpp
M src/config/config.cpp => src/config/config.cpp +14 -3
@@ 1,10 1,12 @@
#include <config/config.hpp>
#include <utils/tolower.hpp>
#include <utils/split.hpp>

#include <iostream>
#include <cstring>

#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <vector>

using namespace std::string_literals;



@@ 40,6 42,15 @@ int Config::get_int(const std::string& option, const int& def)
    return def;
}

bool Config::is_in_list(const std::string& option, const std::string& value)
{
  std::string res = Config::get(option, "");
  if (res.empty())
    return false;
  std::vector<std::string> list = utils::split(res, ':');
  return std::find(list.cbegin(), list.cend(), value) != list.cend();
}

void Config::set(const std::string& option, const std::string& value, bool save)
{
  Config::values[option] = value;

M src/config/config.hpp => src/config/config.hpp +5 -0
@@ 46,6 46,11 @@ public:
  static int get_int(const std::string&, const int&);
  static bool get_bool(const std::string&, const bool);
  /**
   * Returns true if value is present in a colon-separated list, otherwise
   * false.
   */
  static bool is_in_list(const std::string& option, const std::string& value);
  /**
   * Set a value for the given option. And write all the config
   * in the file from which it was read if save is true.
   */