summaryrefslogtreecommitdiff
path: root/src/utils/string.cpp
blob: 635e71aac687d47a214e1d5eb11f939cabe1e096 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <utils/string.hpp>
#include <utils/encoding.hpp>

bool to_bool(const std::string& val)
{
  return (val == "1" || val == "true");
}

std::vector<std::string> cut(const std::string& val, const std::size_t size)
{
  std::vector<std::string> res;
  std::string::size_type pos = 0;
  while (pos < val.size())
    {
      // Get the number of chars, <= size, that contain only whole
      // UTF-8 codepoints.
      std::size_t s = 0;
      auto codepoint_size = utils::get_next_codepoint_size(val[pos + s]);
      while (s + codepoint_size <= size && pos + s < val.size())
        {
          s += codepoint_size;
          codepoint_size = utils::get_next_codepoint_size(val[pos + s]);
        }
      res.emplace_back(val.substr(pos, s));
      pos += s;
    }
  return res;
}