message: crispy: adds split() helper to split strings by delimiter
diff: #include <unordered_map>
  #include <string>
  +#include <vector>
  namespace crispy {
  -std::unordered_map<std::string, std::string> splitKeyValuePairs(std::string const& _text, char _delimiter)
  +inline std::vector<std::string_view> split(std::string_view const& _text, char _delimiter)
  +{
  + auto res = std::vector<std::string_view>{};
  +
  + size_t i_beg = 0;
  + size_t i = _text.find(_delimiter);
  +
  + // e.g.: foobar::foo2:foo3:....
  + while (i != _text.npos)
  + {
  + res.push_back(std::string_view(_text.data() + i_beg, i - i_beg));
  +
  + i_beg = i + 1;
  + i = _text.find(_delimiter, i_beg);
  + }
  + res.push_back(std::string_view{_text.data() + i_beg, _text.size() - i_beg});
  + return res;
  +}
  +
  +std::unordered_map<std::string_view, std::string_view> splitKeyValuePairs(std::string_view const& _text, char _delimiter)
  {
  // params := pair (':' pair)*
  // pair := TEXT '=' TEXT
  // e.g.: foo=bar:foo2=bar2:....
  - std::unordered_map<std::string, std::string> params;
  + std::unordered_map<std::string_view, std::string_view> params;
  size_t i_beg = 0;
  size_t i = _text.find(_delimiter);
  @@ -26,7 +46,7 @@ std::unordered_map<std::string, std::string> splitKeyValuePairs(std::string cons
  auto const key = param.substr(0, k);
  auto const val = param.substr(k + 1);
  if (!key.empty())
  - params[std::string(key)] = std::string(val);
  + params[key] = val;
  }
  i_beg = i + 1;
  i = _text.find(_delimiter, i_beg);
  @@ -38,7 +58,7 @@ std::unordered_map<std::string, std::string> splitKeyValuePairs(std::string cons
  auto const key = param.substr(0, k);
  auto const val = param.substr(k + 1);
  if (!key.empty())
  - params[std::string(key)] = std::string(val);
  + params[key] = val;
  }
  return params;
  