util: allow newlines in string to be split

This commit is contained in:
moneromooo-monero 2019-10-29 17:43:09 +00:00
parent fe3f6a3e6b
commit f19c9f2307
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3
1 changed files with 14 additions and 1 deletions

View File

@ -1239,7 +1239,7 @@ std::string get_nix_version_display_string()
return get_string_prefix_by_width(s, 999999999).second; return get_string_prefix_by_width(s, 999999999).second;
}; };
std::vector<std::pair<std::string, size_t>> split_string_by_width(const std::string &s, size_t columns) std::vector<std::pair<std::string, size_t>> split_line_by_width(const std::string &s, size_t columns)
{ {
std::vector<std::string> words; std::vector<std::string> words;
std::vector<std::pair<std::string, size_t>> lines; std::vector<std::pair<std::string, size_t>> lines;
@ -1279,4 +1279,17 @@ std::string get_nix_version_display_string()
return lines; return lines;
} }
std::vector<std::pair<std::string, size_t>> split_string_by_width(const std::string &s, size_t columns)
{
std::vector<std::string> lines;
std::vector<std::pair<std::string, size_t>> all_lines;
boost::split(lines, s, boost::is_any_of("\n"), boost::token_compress_on);
for (const auto &e: lines)
{
std::vector<std::pair<std::string, size_t>> new_lines = split_line_by_width(e, columns);
for (auto &l: new_lines)
all_lines.push_back(std::move(l));
}
return all_lines;
}
} }