| 242 | |
| 243 | template <size_t MaxLength> |
| 244 | constexpr std::pair<std::array<char, MaxLength + 1>, size_t> |
| 245 | to_snake_case(std::string_view name) { |
| 246 | std::array<char, MaxLength + 1> buffer{}; |
| 247 | size_t pos = 0; |
| 248 | for (size_t i = 0; i < name.size(); ++i) { |
| 249 | char c = name[i]; |
| 250 | if (c == '_' || c == '-') { |
| 251 | buffer[pos++] = '_'; |
| 252 | continue; |
| 253 | } |
| 254 | if (needs_snake_separator(name, i)) { |
| 255 | buffer[pos++] = '_'; |
| 256 | } |
| 257 | buffer[pos++] = is_upper_ascii(c) ? to_lower_ascii(c) : c; |
| 258 | } |
| 259 | buffer[pos] = '\0'; |
| 260 | return {buffer, pos}; |
| 261 | } |
| 262 | |
| 263 | } // namespace detail |
| 264 |
nothing calls this directly
no test coverage detected