Simplify k=v parsing code

pull/1385/head
Jason Rhinelander 4 years ago
parent 9d6dc40f81
commit c97b9ef31b

@ -108,23 +108,18 @@ namespace llarp
else if (kvDelim != std::string_view::npos) else if (kvDelim != std::string_view::npos)
{ {
// key value pair // key value pair
std::string_view::size_type k_start = 0; std::string_view k = realLine.substr(0, kvDelim);
std::string_view::size_type k_end = kvDelim; std::string_view v = realLine.substr(kvDelim + 1);
std::string_view::size_type v_start = kvDelim + 1;
std::string_view::size_type v_end = realLine.size() - 1;
// clamp whitespaces // clamp whitespaces
while (whitespace(realLine[k_start]) && k_start != kvDelim) for (auto* x : {&k, &v})
++k_start; {
while (whitespace(realLine[k_end - 1]) && k_end != k_start) while (!x->empty() && whitespace(x->front()))
--k_end; x->remove_prefix(1);
while (whitespace(realLine[v_start]) && v_start != v_end) while (!x->empty() && whitespace(x->back()))
++v_start; x->remove_suffix(1);
while (whitespace(realLine[v_end])) }
--v_end;
// sect.k = v
std::string_view k = realLine.substr(k_start, k_end - k_start);
std::string_view v = realLine.substr(v_start, 1 + (v_end - v_start));
if (k.size() == 0 || v.size() == 0) if (k.size() == 0 || v.size() == 0)
{ {
LogError(m_FileName, " invalid line (", lineno, "): '", line, "'"); LogError(m_FileName, " invalid line (", lineno, "): '", line, "'");

Loading…
Cancel
Save