69 lines
1.8 KiB
C++
69 lines
1.8 KiB
C++
|
|
#include "ConfigParser.hpp"
|
|
|
|
// should i be sending & references?
|
|
// const?
|
|
std::string ConfigParser::_pre_set_val_check(const std::string key, \
|
|
const std::string value)
|
|
{
|
|
|
|
// check key for ;
|
|
// check values for ; at end and right number of words depending on key
|
|
|
|
// std::cout << "pre check\n";
|
|
if (key.find_first_of(";") != NPOS)
|
|
throw std::invalid_argument("bad config file arguments 2");
|
|
|
|
if (value.find_first_of("\t") != NPOS)
|
|
throw std::invalid_argument("why would you put tabs between values");
|
|
|
|
size_t i = value.find_first_of(";");
|
|
// so you can't have no ;
|
|
// you can't have just ;
|
|
// and you can't have a ; not at the end or several ;
|
|
// in theory value_find_last_of should find the only ;
|
|
if (i == NPOS || (value.find_last_not_of(" \n")) != i \
|
|
|| value.compare(";") == 0)
|
|
throw std::invalid_argument("bad config file arguments 4");
|
|
|
|
|
|
return (value.substr(0, i));
|
|
}
|
|
|
|
// const?
|
|
// assumes curr is on a space or \t or \n
|
|
std::string ConfigParser::_get_first_word(size_t *curr)
|
|
{
|
|
size_t start;
|
|
|
|
if ((start = _content.find_first_not_of(" \t\n", *curr)) == NPOS)
|
|
throw std::invalid_argument("bad config file arguments");
|
|
if ((*curr = _content.find_first_of(" \t\n", start)) == NPOS)
|
|
throw std::invalid_argument("bad config file arguments");
|
|
|
|
std::string key = _content.substr(start, *curr - start);
|
|
return (key);
|
|
}
|
|
|
|
// const?
|
|
// also assumes curr is on a space \t or \n
|
|
std::string ConfigParser::_get_rest_of_line(size_t *curr)
|
|
{
|
|
size_t start;
|
|
|
|
if ((start = _content.find_first_not_of(" \t\n", *curr)) == NPOS)
|
|
throw std::invalid_argument("bad config file arguments");
|
|
if ((*curr = _content.find_first_of("\n", start)) == NPOS)
|
|
throw std::invalid_argument("bad config file arguments");
|
|
|
|
std::string values = _content.substr(start, *curr - start);
|
|
return (values);
|
|
}
|
|
|
|
|
|
void ConfigParser::print_content() const
|
|
{
|
|
std::cout << _content;
|
|
}
|
|
|