| 665 | } |
| 666 | |
| 667 | std::string_view utf8Truncate(std::string_view v, size_t size) |
| 668 | { |
| 669 | auto trunc = v.substr(0, size); |
| 670 | for (size_t i = 0; i < trunc.size();) |
| 671 | { |
| 672 | auto length = utf8GetCodePointSize(trunc.substr(i, trunc.size())); |
| 673 | if (!length.has_value()) |
| 674 | { |
| 675 | return trunc.substr(0, i); |
| 676 | } |
| 677 | i += length.value(); |
| 678 | } |
| 679 | |
| 680 | return trunc; |
| 681 | } |
| 682 | |
| 683 | std::string_view utf8TruncateCodePoints(std::string_view v, size_t size) |
| 684 | { |
no test coverage detected