harfang3d/harfang/foundation/named_parm_string.cpp
2021-10-13 14:40:31 +02:00

43 lines
1.1 KiB
C++

// HARFANG(R) Copyright (C) 2021 Emmanuel Julien, NWNC HARFANG. Released under GPL/LGPL/Commercial Licence, see licence.txt for details.
#include "foundation/named_parm_string.h"
#include "foundation/string.h"
namespace hg {
static const std::vector<std::string> what = {"\t", "\r", "\n"};
static const std::vector<std::string> by = {"", "", ""};
void CleanNamedParmString(std::string &s) {
normalize_eol(s);
replace_all(s, what, by);
s = trim(s);
}
NamedParmArray ParseNamedParmString(const std::string &parm_string, const std::string &parm_separator, const std::string &key_value_separator) {
NamedParmArray parm_array; // keep here to help NRVO
auto parms = split(parm_string, parm_separator);
for (auto &parm : parms) {
auto kv = split(parm, key_value_separator);
if (kv.size() == 2) {
if (kv[0].empty() && kv[1].empty())
continue;
parm_array.push_back({kv[0], kv[1]});
} else {
if (parm.empty())
continue;
parm_array.push_back({parm, {}});
}
CleanNamedParmString(parm_array.back().name);
CleanNamedParmString(parm_array.back().value);
}
return parm_array;
}
} // namespace hg